一個有趣的現象
無意間發現了一個有趣的現象。下邊是重現整個現象的過程。1,編寫一個接口







2,編寫一個類



















3,新建一個工程,加入兩個jar包。然后寫一個測試類













true
null
到這里一切正常,下邊開始不同的地方。
5,把iface.jar從工程中移走,這時測試類出現編譯錯誤,這是因為MyJar.getMyInt()要返回一個MyInt類型的對象,而MyInt接口不存在。
刪掉測試類的第二個println 變成這樣












true
8,分析:移走接口后導致測試類第二行println()中的代碼Myjar.getMyInt()編譯不過去,不能之行,是因為找不到MyInt接口
但第一行能編譯,且能執行,而第一行的代碼在內部其實是調用第二行的,但依然能執行成功。
這就說同樣的函數:MyJar.getMyInt()外部調用不能執行,通過一個函數轉一下就能執行,呵呵,挺有趣。
感覺應該是虛擬機的實現機制方面的原因。詳細情形還沒有確認。
posted on 2007-07-05 01:00 dreamstone 閱讀(1774) 評論(14) 編輯 收藏 所屬分類: jdk相關