覆蓋第三方jar包中的某一個類。妙!!


在我們日常的開發中,經常需要使用第三方的jar包,但是很多時候總是會發現第三方的jar包中的某一個類,有問題,但是又無法繼承,因為你繼承后 變成了你自己的,jar包中 調用的 還是 他自己內部包含的,如何能讓 jar包中調用的類就是我們自己的呢,就是覆蓋jar包中的某一個類。

需求:京東的jar包中的 有一個類寫錯了,京東也不更新他的SDK,且他的SDK沒有源碼,這個時候的解決方案是:

1. 找到錯誤的類,然后反編譯拿到這個類的源碼。

2.在我們自己的項目中的src-java 目錄下,新建一個 與他jar包中 同名的類,舉例:

package com.jd.open.api.sdk.internal.parser;

 

 

這樣 就可以修改 這個 JsonParser類 糾正他的錯誤,同時其他地方不做任何改變。外部第三方的 sdk調用這個類的時候,實際上是調用我們自己修改過的,因為優先級的問題,

class目錄下的類 優先級 大於 lib下的類。這點設計的是秒啊!!!。

 

 

3.然后再打包成 root.war 就可以了。

=============================================================================================

以下是我自己的測試:

1.common.jar里有一個 ApiResponse類

2.在另一個oauth模塊里 再次建立一模一樣的包路徑的 ApiResponse類

3.在使用 ApiResponse類的時候 會發現他是優先 oauth里 我們自己新建的

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM