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