NPE by Constructor Reference for enum
bitter_fox
bitterfoxc at gmail.com
Fri Jun 8 06:24:03 PDT 2012
I've just got the fix.
Thank you,
bitter_fox
2012/6/8 Maurizio Cimadamore <maurizio.cimadamore at oracle.com>
> Good catch - the type of a constructor reference must denote a
> (non-abstract) class type.
>
> Maurizio
>
>
> On 08/06/12 01:14, bitter_fox wrote:
>
>> Hi,
>> The compiler(Revision of langtools is 1422) throws NPE by Constructor
>> Reference for enum:
>>
>> public class Main
>> {
>> interface SAM0<R>
>> {
>> R invoke();
>> }
>>
>> enum E
>> {
>> A;
>>
>> private SAM0<E> sam = E::new; // NPE
>>
>> E() {}
>>
>> private void m()
>> {
>> //new E(); // compile time error
>> }
>> }
>> }
>>
>> I think E::new would be compile time error like new E().
>>
>> Here is the StackTrace:
>>
>> java.lang.NullPointerException
>> at com.sun.tools.javac.util.**ListBuffer.append(ListBuffer.**
>> java:129)
>> at com.sun.tools.javac.comp.**Lower.boxArgs(Lower.java:2898)
>> at com.sun.tools.javac.comp.**Lower.visitNewClass(Lower.**
>> java:2688)
>> at
>> com.sun.tools.javac.tree.**JCTree$JCNewClass.accept(**JCTree.java:1444)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.translate(**TreeTranslator.java
>> :58)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2201)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2212)
>> at com.sun.tools.javac.comp.**Lower.visitReturn(Lower.java:**
>> 3385)
>> at com.sun.tools.javac.tree.**JCTree$JCReturn.accept(JCTree.**
>> java:1312)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.translate(**TreeTranslator.java
>> :58)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2201)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.translate(**TreeTranslator.java
>> :70)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.visitBlock(**TreeTranslator.jav
>> a:160)
>> at com.sun.tools.javac.comp.**Lower.visitBlock(Lower.java:**3358)
>> at com.sun.tools.javac.tree.**JCTree$JCBlock.accept(JCTree.**
>> java:837)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.translate(**TreeTranslator.java
>> :58)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2201)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.visitMethodDef(**TreeTranslator
>> .java:144)
>> at
>> com.sun.tools.javac.comp.**Lower.visitMethodDefInternal(**Lower.java:2667
>> )
>> at com.sun.tools.javac.comp.**Lower.visitMethodDef(Lower.**
>> java:2586)
>> at
>> com.sun.tools.javac.tree.**JCTree$JCMethodDecl.accept(**JCTree.java:721)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.translate(**TreeTranslator.java
>> :58)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2201)
>> at com.sun.tools.javac.comp.**Lower.visitClassDef(Lower.**
>> java:2331)
>> at
>> com.sun.tools.javac.tree.**JCTree$JCClassDecl.accept(**JCTree.java:643)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.translate(**TreeTranslator.java
>> :58)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2201)
>> at com.sun.tools.javac.comp.**Lower.visitNewClass(Lower.**
>> java:2726)
>> at
>> com.sun.tools.javac.tree.**JCTree$JCNewClass.accept(**JCTree.java:1444)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.translate(**TreeTranslator.java
>> :58)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2201)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2212)
>> at com.sun.tools.javac.comp.**Lower.visitVarDef(Lower.java:**
>> 3344)
>> at
>> com.sun.tools.javac.tree.**JCTree$JCVariableDecl.accept(**JCTree.java:781
>> )
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.translate(**TreeTranslator.java
>> :58)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2201)
>> at com.sun.tools.javac.comp.**Lower.visitClassDef(Lower.**
>> java:2331)
>> at
>> com.sun.tools.javac.tree.**JCTree$JCClassDecl.accept(**JCTree.java:643)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.translate(**TreeTranslator.java
>> :58)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2201)
>> at com.sun.tools.javac.comp.**Lower.visitClassDef(Lower.**
>> java:2331)
>> at
>> com.sun.tools.javac.tree.**JCTree$JCClassDecl.accept(**JCTree.java:643)
>> at
>> com.sun.tools.javac.tree.**TreeTranslator.translate(**TreeTranslator.java
>> :58)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2201)
>> at com.sun.tools.javac.comp.**Lower.translate(Lower.java:**2220)
>> at
>> com.sun.tools.javac.comp.**Lower.translateTopLevelClass(**Lower.java:3709
>> )
>> at
>> com.sun.tools.javac.main.**JavaCompiler.desugar(**JavaCompiler.java:1418)
>>
>> at
>> com.sun.tools.javac.main.**JavaCompiler.desugar(**JavaCompiler.java:1295)
>>
>> at
>> com.sun.tools.javac.main.**JavaCompiler.compile2(**JavaCompiler.java:892)
>>
>> at
>> com.sun.tools.javac.main.**JavaCompiler.compile(**JavaCompiler.java:851)
>> at com.sun.tools.javac.main.Main.**compile(Main.java:441)
>> at com.sun.tools.javac.main.Main.**compile(Main.java:358)
>> at com.sun.tools.javac.main.Main.**compile(Main.java:347)
>> at com.sun.tools.javac.main.Main.**compile(Main.java:338)
>> at com.sun.tools.javac.Main.**compile(Main.java:76)
>> at com.sun.tools.javac.Main.main(**Main.java:61)
>>
>> Regards,
>> bitter_fox
>>
>>
>
More information about the lambda-dev
mailing list