据我了解 new 是一个关键字,而不是一个函数。
例如
A a = new A();
实例化类型 A 的对象 a。
关键字本身不与任何对象关联。
相反,当我们在 A 中有一个公共内部类 B 时,我们调用
B b = a.new B()
这里看起来 new 是 B 的属性,而不是独立的关键字。
A.new 的含义是什么?
据我了解 new 是一个关键字,而不是一个函数。
例如
A a = new A();
实例化类型 A 的对象 a。
关键字本身不与任何对象关联。
相反,当我们在 A 中有一个公共内部类 B 时,我们调用
B b = a.new B()
这里看起来 new 是 B 的属性,而不是独立的关键字。
A.new 的含义是什么?
New
在这两种情况下都是关键字。它是类实例创建表达式的一部分。
有两种形式:不合格和合格。
非限定形式以关键字“new”开头。
合格的表格以主要类开始,然后是“新”。这允许创建内部类——非静态嵌套类,它包含对外部类实例的隐式引用。限定形式提供了一种指定该实例的方法。
不合格的类实例创建表达式以关键字 new 开头。
非限定类实例创建表达式可用于创建类的实例,无论该类是顶级(§7.6)、成员(§8.5、§9.5)、本地(§14.3)还是匿名类(§ 15.9.5)。
合格的类实例创建表达式以 Primary 开头。
合格的类实例创建表达式允许创建内部成员类及其匿名子类的实例。
new
是一个有它自己的语法的关键字(你已经注意到了)。见JLS 3.9
Java没有这样的功能。它有方法,Java 8 将添加更多功能特性。
它将是B b = a.new B();
并且 new 仍然只是一个关键字。对对象 a 的引用向编译器表明 B 是一个嵌套类。
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
B b = A.new B(); // A should be an instance object not a class name,
// otherwise it's not a valid syntax
您正在创建一个B
可以访问 instance 的实例成员的类型的对象A
。
new 肯定是 Java 中的一个关键词。
这是新关键字语法的一部分。正如您所介绍的,这有两种调用方式。第二个用于先实例化外部类,然后才能实例化内部类。
确实,这可能看起来像类的属性,但您将无法在 Java 中创建这样的属性。由于“新”是关键词,因此不能用作财产。