添加小編微信進入java學習交流群,小編微信:372787553,備注進群
Exception in thread “main” java.lang.AbstractMethodError 這樣的異常并不常見,如果您有幸遇到了,那么一定要珍惜,否則轉瞬即逝!
為什么會發生這樣的錯誤?
讓我們看一下官方的解釋:
當應用程序嘗試調用抽象方法時拋出。 通常,該錯誤被編譯器捕獲; 如果某些類的定義自上次編譯當前執行的方法以來不兼容地更改,則此錯誤只能在運行時發生。
abstract class B { // v1.0 public abstract void changedMethodInDifVersion(int arg1);}class BImpl extends B{ @Override public void changedMethodInDifVersion(int arg1) { System.out.println("結果為:"+arg1); }}
驗證代碼
public class MainTest { public static void main(String[] args) { B dependency = new BImpl(); dependency.changedMethodInDifVersion(1); }}
結果
以上的代碼都可以正常運行,接下來我們對接口進行升級改造
abstract class B { // v1.0// public abstract void changedMethodInDifVersion(int arg1); // v2.0 public abstract void changedMethodInDifVersion(int arg1,int arg2);}class BImpl extends B{ @Override public void changedMethodInDifVersion(int arg1,int arg2) { System.out.println("結果為:"+(arg1+arg2)); }}
代碼
public class MainTest { public static void main(String[] args) { B dependency = new BImpl(); dependency.changedMethodInDifVersion(1,2); }}
結果
神奇的發生了錯誤
為何會發生錯誤的錯誤,是不是很尷尬,竟然中招了?
來讓我們看看具體的報錯:
Exception in thread "main" java.lang.AbstractMethodError: Receiver class com.javayh.json.test.BImpl does not define or inherit an implementation of the resolved method 'abstract void changedMethodInDifVersion(int, int)' of abstract class com.javayh.json.test.B.at com.javayh.json.test.MainTest.main(MainTest.java:16)
我們可以看到does not define or inherit an implementation of the resolved method 'abstract void changedMethodInDifVersion(int, int)' of abstract class
這樣的提示,但是我們已經繼承了該類的方法?那么錯誤肯定不在我們的代碼,而在他編譯解析的地方出了錯誤!接下來我們看看編譯后的源碼;
神奇的發現,BImpl 內的方法并沒編譯成功,這樣我們重新進行編譯,javac一下
這是我們我們發現錯誤已經解決,可以正常的運行!
為何會這樣?其實在文章的起始位置已經說了發生原因,這是我們在來理解一下:
當應用程序嘗試調用抽象方法時拋出。 通常,該錯誤被編譯器捕獲; 如果某些類的定義自上次編譯當前執行的方法以來不兼容地更改,則此錯誤只能在運行時發生。
理解:
javac/mvn compile
138687.html
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
華三h3c路由器好嗎?你好,,華三H3C路由的品牌是一流的,比普通路由好很多。他們以前是大型網絡設備供應商,現在也從事家庭路由的生產。技術上沒有問題。杭州H3C科技有限公司(簡稱H3C)主要提供IT基礎設施產品和解決方案的研發、生產、銷售和服務。H3C在有38家分公司。目前,公司擁有5000名員工,其中研發人員;ampd類人員占55%。截至2013年底,H3C已經服務了超過70%的中央部委、9個國...
RMHD有哪些優點?Realmedia HD,RealNetworks的繼任者?RMVB視頻編解碼器,提供卓越的圖像質量,在移動設備上提供高清晰度(高達8K)體驗-通過互聯網為觀眾提供所選設備上的高質量視頻。與H.264相比,realmedia HD技術的壓縮效率提高了30%-45%,從而釋放了設備的存儲空間,提供了高清圖像,提高了傳輸效率,降低了數據成本。realmedia HD產品套件在流媒體...
psp如龍有沒有漢化的?possp上的兩個模特像龍。比如龍1新篇章和龍2阿修羅篇章,這兩個游戲之前都是有人填的,然后一直沒有消息,應該是沒有消息,就像多多的軌跡也是有人挖的,但是這個游戲目前還是沒有中文版,可以去攻略游戲對抗攻略。畢竟,在過去的PS1和PS2時代,很少有游戲。更不用說FC時代了。如龍有幾個版本?如龍系列抵得上七部以一馬Kiryu為主角的如龍作品。即如龍1.2.3.4.5.0.6?!?..