一個(gè)有趣的現(xiàn)象
無(wú)意間發(fā)現(xiàn)了一個(gè)有趣的現(xiàn)象。下邊是重現(xiàn)整個(gè)現(xiàn)象的過程。1,編寫一個(gè)接口







2,編寫一個(gè)類



















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













true
null
到這里一切正常,下邊開始不同的地方。
5,把iface.jar從工程中移走,這時(shí)測(cè)試類出現(xiàn)編譯錯(cuò)誤,這是因?yàn)镸yJar.getMyInt()要返回一個(gè)MyInt類型的對(duì)象,而MyInt接口不存在。
刪掉測(cè)試類的第二個(gè)println 變成這樣












true
8,分析:移走接口后導(dǎo)致測(cè)試類第二行println()中的代碼Myjar.getMyInt()編譯不過去,不能之行,是因?yàn)檎也坏組yInt接口
但第一行能編譯,且能執(zhí)行,而第一行的代碼在內(nèi)部其實(shí)是調(diào)用第二行的,但依然能執(zhí)行成功。
這就說同樣的函數(shù):MyJar.getMyInt()外部調(diào)用不能執(zhí)行,通過一個(gè)函數(shù)轉(zhuǎn)一下就能執(zhí)行,呵呵,挺有趣。
感覺應(yīng)該是虛擬機(jī)的實(shí)現(xiàn)機(jī)制方面的原因。詳細(xì)情形還沒有確認(rèn)。
posted on 2007-07-05 01:00 dreamstone 閱讀(1768) 評(píng)論(14) 編輯 收藏 所屬分類: jdk相關(guān)