作者macbuntu (邀怪)
看板java
標題[問題] 這算是 Java 語法的漏洞嗎?
時間Sun Nov 9 22:09:34 2008
做個頭腦體操, 看看下面這兩個 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