![](/img/trans.png)
[英]In java what is the purpose of NonWildcardTypeArguments following the new keyword?
[英]what is java new? A function or keyword
據我所知,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
的對象,該對象可以訪問實例A
實例成員。
新的肯定是Java中的一個關鍵詞。
這是新關鍵字語法的一部分。 正如您所呈現的那樣,這有兩種調用方式。 第二個用於在實例化內部類之前首先實例化外部類。
它確實看起來像是類的屬性,但是你無法在Java中創建這樣的屬性。 因為“新”是關鍵詞所以它不能用作財產。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.