程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> jar-Java JAR包中的類 父類方法不可見等

jar-Java JAR包中的類 父類方法不可見等

編輯:編程綜合問答
Java JAR包中的類 父類方法不可見等

場景:
兩個jar包分別為a.jar、b.jar。b.jar中引用了a.jar,具體為b.jar中的類B繼承了a.jar中的類A。
A有兩個方法,a.getName(),a.getAge(),B重寫了getName方法,未重寫getAge方法。
新建了一個Java項目C,**C只引用了b.jar,未引用a.jar**,於是出現了如下兩個問題:
1、在C項目中,類B沒有getAge方法
2、在C項目中,使用強制類型轉換時(如)B b = (B)map.get("key"),會報錯: - The type A cannot be resolved. It is indirectly referenced from required .class files
請教:1、構建子類對象時,繼承自父類的方法為何沒有加載?2、強制類型轉換為何需要找A類?

追加:前提就是C項目不能引用a.jar。不然也不會發現這個問題。我知道引入a.jar可以解決這個問題。但是想知道為何必須引入a.jar。虛擬機加載b.jar中的類並創建對象時,難道不是把所有方法都准備好了嗎?為什麼還會有父類方法不可見的情況

最佳回答:


虛擬機類加載器在加載的時候有類的主動引用(一定會發生類的初始化)和被動引用(不會發生類的初始化)的區別
如果你沒有導入父類的jar包,類加載器將無法加載這個父類,當然也無妨將其初始化

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved