Exceptions at Constructor References for inner classes

bitter_fox bitterfoxc at gmail.com
Sat Jun 2 08:14:15 PDT 2012


Hi,
I found two cases which cause of Exceptions at Constructor References for
inner classes:

public class Main
{
    public interface SAM0<R>
    {
        R invoke();
    }

    public interface SAM1<R, A>
    {
        R invoke(A a);
    }

    static
    {
        SAM1<Sub.Inner, Sub> sam = Sub.Inner::new; // NPE
    }
}

public class Sub
{
    public class Inner {}

    static
    {
        Main.SAM1<Inner, Sub> sam = Inner::new; // OK
    }

    {
        Main.SAM0<Inner> sam0 = Inner::new; // OK
        Main.SAM1<Inner, Sub> sam1 = Inner::new; //
InapplicableMethodException
    }
}

These are stack traces:

java.lang.NullPointerException
        at
com.sun.tools.javac.comp.Resolve.hasEnclosingInstance(Resolve.java:25
17)
        at
com.sun.tools.javac.comp.Resolve.resolveMemberReference(Resolve.java:
2236)
        at com.sun.tools.javac.comp.Attr.visitReference(Attr.java:2631)
        at
com.sun.tools.javac.tree.JCTree$JCMemberReference.accept(JCTree.java:
1880)
        at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:552)
        at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:568)
        at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1003)
        at
com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:781
)
        at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:552)
        at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:595)
        at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:611)
        at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1029)
        at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:837)
        at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:552)
        at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:595)
        at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:3739)
        at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:3658)
        at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:3592)
        at com.sun.tools.javac.comp.Attr.attrib(Attr.java:3566)
        at
com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:120
6)
        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)

com.sun.tools.javac.comp.Resolve$InapplicableMethodException
        at com.sun.tools.javac.comp.Resolve.<init>(Resolve.java:131)
        at com.sun.tools.javac.comp.Resolve.instance(Resolve.java:146)
        at com.sun.tools.javac.comp.Check.<init>(Check.java:100)
        at com.sun.tools.javac.comp.Check.instance(Check.java:91)
        at com.sun.tools.javac.code.Types.<init>(Types.java:104)
        at com.sun.tools.javac.code.Types.instance(Types.java:90)
        at com.sun.tools.javac.jvm.ClassReader.<init>(ClassReader.java:267)
        at
com.sun.tools.javac.jvm.ClassReader.instance(ClassReader.java:229)
        at
com.sun.tools.javac.main.JavaCompiler.<init>(JavaCompiler.java:341)
        at
com.sun.tools.javac.main.JavaCompiler.instance(JavaCompiler.java:90)
        at com.sun.tools.javac.main.Main.compile(Main.java:428)
        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