我在JLS8/15.9.1中发现了以下规则:
在new关键字之后的标识符必须明确指示一个可访问的、非抽象的、非枚举类型的内部类,以及编译时主表达式或ExpressionName的成员。
我无法想象最后一个限制是什么意思。也许您可以给出编译时Primary表达式或ExpressionName的成员的例子?
我在JLS8/15.9.1中发现了以下规则:
在new关键字之后的标识符必须明确指示一个可访问的、非抽象的、非枚举类型的内部类,以及编译时主表达式或ExpressionName的成员。
我无法想象最后一个限制是什么意思。也许您可以给出编译时Primary表达式或ExpressionName的成员的例子?
文本内容为:“如果类实例创建表达式带有限定符”……然后……(您的引用)
所以,我猜是这种情况:
package test;
public class Test1 {
public class Test3{
}
}
你可以在另一个类中按照以下方式实例化它:
package test;
import test.Test1.Test3;
public class Maker {
public static void main(String[] args) {
Test1 test1 = new Test1();
Test3 test3 = test1.new Test3();
}
}
然后,
test1.new Test3()
(test1.new是一个限定的new,而不是非限定的new)祝愉快 :)