精華區beta java 關於我們 聯絡資訊
做個頭腦體操, 看看下面這兩個 class: class Foo { static String name; } class A { static Foo B = new Foo(); static class B { static String name; } } 之後在別處寫到: A.B.name = "abc"; 這樣 compiler 並不會抱怨是 ambiguous, 而是將 A.B.name resolve 成為 A.B.name , 頂多只有個 warning 說 static field 'name' 應該 要以 static reference 去操作, 也就是 Foo.name 會比較好. 糟糕的是, 除非靠 reflection, 否則完全沒有辦法用到 A.B.name 耶? 這樣狀況 compiler 應該當成 ambiguous 比較好吧, 否則這變成是語法的瑕疵, 合乎 Java 語法的程式, 卻有東西完全無法存取得到? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.27.29 ※ 編輯: macbuntu 來自: 220.135.27.29 (11/09 22:11)
godfat:所以 C# 有所限制(聽說的) 11/09 22:21
godfat:不過我是覺得就不要亂寫就好,不是大問題 11/09 22:22
AI3767:奇怪, 我試了後, 都沒有warning 出現 Orz 11/10 01:28
ogamenewbie:我比較好奇是在 class A 裡面去撞名的意義是?... 11/10 06:04
qrtt1:呵, 實務上雖然不會這樣, 但值得注意有這樣的現象 11/10 09:23