据我所知,new是一个关键词,而不是一个函数。
例如
A a = new A();
实例化类型A的对象a 关键字本身与任何对象都没有关联。
相反,当我们在A公共内部B级时,我们称之为
B b = a.new B()
这里看起来new是B的属性,而不是一个独立的关键字。
A.new是什么意思?
答案 0 :(得分:16)
New
都是关键字。它是类实例创建表达式的一部分。
有两种形式:不合格和合格。
不合格的表单以关键字“new”开头。
合格表单以主要类开头,然后是“新”。这允许创建内部类 - 非静态嵌套类,其中包含对外部类的实例的隐式引用。限定表单提供了指定该实例的方法。
来自Java Language Specification, section 15.9:
非限定类实例创建表达式以关键字new开头。
可以使用非限定类实例创建表达式来创建类的实例,无论该类是顶级(第7.6节),成员(第8.5节,第9.5节),本地(第14.3节)还是匿名class(§15.9.5)。
合格的类实例创建表达式以Primary。
开头限定类实例创建表达式允许创建内部成员类及其匿名子类的实例。
答案 1 :(得分:7)
new
是一个具有自己语法的关键字(正如您所注意到的)。见JLS 3.9
Java没有这样的功能。它有方法,Java 8将添加更多功能。
答案 2 :(得分:3)
它将是B b = a.new B();
,而new仍然只是一个关键字。对象a的引用向编译器显示B是嵌套类。
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
答案 3 :(得分:0)
B b = A.new B(); // A should be an instance object not a class name,
// otherwise it's not a valid syntax
您正在创建一个B
类型的对象,该对象可以访问实例A
的实例成员。
答案 4 :(得分:0)
新的肯定是Java中的一个关键词。
这是新关键字语法的一部分。正如您所呈现的那样,这有两种调用方式。第二个用于在实例化内部类之前首先实例化外部类。
这可能看起来像是类的属性,但是你无法在Java中创建这样的属性。因为“新”是关键词所以它不能用作财产。