2013-05-13 35 views
22

据我所知new是一个关键字,而不是一个函数。
什么是java新的?一个函数或关键字

例如

A a = new A(); 

实例化一个类型A.
关键字的不与任何物体本身相关联的对象。

相反,当我们已经在公共内B类我们称之为

B b = a.new B() 

这看起来像新的一样是B的财产,而不是一个独立的关键字。

A.new是什么意思?

+8

这是一个关键字,根据定义。事实上,它可能出现在你想要的方法名称的地方并不会改变这一点。 – 2013-05-13 14:03:02

+2

我想你的意思是'a.new B();'而不是'A.new B();' – 2013-05-13 14:03:37

+1

http://stackoverflow.com/a/15759892/2031799 - 我已经回答了类似的问题。 – Mikhail 2013-05-18 10:19:39

回答

16

New是两种情况下的关键字。它是类实例创建表达式的一部分。

有两种形式:不合格合格

非限定格式以关键字'new'开头。

限定格式以主类开头,然后是“新”。这允许创建内部类 - 非静态嵌套类,它们持有对外部类实例的隐式引用。限定格式提供了一种指定该实例的方法。

Java Language Specification, section 15.9

不合格的类实例创建表达式开始与关键字new。

非限定类的实例创建表达式可以被用来创建一个类的实例,而不管类是否是一个顶级(第7.6节),构件(第8.5节,第9.5节),局部(§14.3)或匿名类(第15.9.5节)。

限定的类实例创建表达式以Primary为开头。

限定的类实例创建表达式允许创建内部成员类及其匿名子类的实例。

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的实例成员。

7

new是一个关键字,它有自己的语法(如您已经注意到的)。请参阅JLS 3.9

Java没有这样的功能。它具有方法,Java 8将添加更多功能特性。

0

新是在Java确保一个关键词。

这是新的关键词语法的一部分。正如你所介绍的那样,这有两种调用方式。第二个用于在实例化内部类之前首先实例化外部类。

确实可能看起来像一个类的属性,但是你将无法在Java中创建这样的属性。由于“新”是关键词,因此不能用作属性。