我讀JLS 8 and in Chapter 6寫入:簡單名稱和限定名
限定名稱NX可以用來指一個包或 引用類型,其中,N是一個簡單的或合格的名稱的成員x是 標識符。如果N命名一個包,則x是該包的成員,即 ,它是一個類或接口類型或一個子包。如果N名稱爲 參考類型或參考類型的變量,則x將指定該類型的成員,該類型可以是類,接口,字段, 或方法。
所以我能想象出具有該:
class C
{
public int n;
}
int j;
C c = new C();
j = 11;
c.n = 11;
j
是一個簡單的名稱,而c.n
是一名合格的名稱。
但是在6.2事情變得複雜。給出這樣的代碼:
class Test {
public static void main(String[] args) {
Class c = System.out.getClass();
System.out.println(c.toString().length() +
args[0].length() + args.length);
}
}
後說:
在args.length長度的發生是一個名字,因爲args.length 是一名合格的名稱(§6.5.6.2)和不是字段訪問表達式 (第15.11節)。一個字段訪問表達式,以及一個方法調用 表達式,一個方法引用表達式和一個限定類 實例創建表達式,使用標識符而不是名稱來表示感興趣的成員。因此,參數 args [0] .length()中的長度不是名稱,而是出現在方法調用表達式中的標識符。
,所以我想我明白,並非所有的表情都是合格的名稱和 甚至我的表情c.n
老實說,我無法理解的區別誰能幫助我?
如果您要添加一些鏈接,閱讀您所指的規範部分會更容易。 –
你在這裏想了解什麼?不要誤解我的意思,我不是在回答這個問題,我喜歡閱讀JLS來找到這樣的事情,但我必須說,我也在爲這個區別而努力 - 我認爲這可能有助於理解當前問題的具體背景,而不是規範的一般性。 –