Re: [問題] member interface不用static import?

看板java作者 (十年一夢)時間10年前 (2013/10/25 01:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《kuangjc5566 (匡匡56)》之銘言: : [略] : 我的問題是,我把別的套件內的物件的member interface (nested interface) : import進來時,因為member interface是自動成為static的,所以應該是要這樣寫 : import static com.demo.now.Test3.Interface; : 也就是我上面po出的完整程式碼的內容 : 是可以成功編譯跟執行的 : 但是我發現你把static拿掉變成 : import com.demo.now.Test3.Interface; : 還是能夠編譯成功,程式也能正常執行 : 有人能夠解釋為什麼可以成功編譯嗎? : 就我所學的,當我寫成 : import com.demo.now.Test3.Interface; : javac應該要抱怨找不到Interface不是嗎? : 而且這個現象只發生在nested interface上 : 要是static nested class就一定要用import static 的語法才能成功編譯 : 否則javac會出現error 說找不到你所指的static nested class : 我用的是javac 1.7.0_40 你測試的做法可能有點問題,導致你獲得上述錯誤的結論。 在尚未引進 static import 時(pre 1.5),import declaration 只有兩種: 1. 沒有使用 * 字元來 import 單一 Type(Single-Type-Import) 2. 有使用 * 的 import declaration(Type-Import-on-Demand) 就第一種寫法來說,你指定一個 type 的 full-qualified name 來 import 之, 就可以使用其 simple name 來 identify 這個 type。 你的測試碼中的 Test3.Interface 不管是 nested interface or class,不論 是 static or non-static,它的 full-qualified name 都是 com.demo.now.Test3.Interface,故皆可以 import com.demo.now.Test3.Interface; 這樣子的 import declaration 使得可以使用其短名(Interface)來指稱之。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.172.228.23
文章代碼(AID): #1IQLa6NO (java)
文章代碼(AID): #1IQLa6NO (java)