2016-09-19 73 views
1

我有一個.JAR文件,它有大量的類。一,我需要的是設置爲最終的,所以我不能擴展它。有一種方法,我基本上必須擴展和修復,否則一切都會中斷。我怎樣才能做到這一點?我知道Reflection和Javassist可以用於此,但我不知道如何。任何其他工具也是可以接受的,只要它有效。如何擴展最終的類?(Reflection,Javassist)

+1

看一看在http://stackoverflow.com/questions/13294629/how-to-extend -a-final-class-in-java –

+0

看到它,沒有例子。我知道這是不可能正常使用Java,但我仍然需要完成 –

回答

2

您不能使用反射修改現有的類定義。

如果該JAR許可證允許你,我會建議一個不同的解決方案:反編譯那一個類;刪除最後的關鍵字;並重建類和JAR文件。

這就是唯一的健壯的方式來解決你的問題。

+0

我不能,反編譯器將所有東西都弄亂...... –

+0

你試過了哪一個?只是爲了記錄 - 我們不是在談論開放源代碼,你可以簡單地下載源代碼? – GhostCat

+0

使用JD-GUI,Luyten。其實,這是一個白帽黑客:) –

0

由於某個原因,最終課程標記爲final,因此最好不要嘗試修改課程。您應考慮轉向其他API或爲您的案例編寫自己的解決方案類。

1

您可以使用一個包裝圍繞最後類例如和擴展功能,例如:

public class YourClass { 
    private FinalClass finalClass; 

    public YourClass { 
     finalClass = new FinalClass(): 
    } 

    public void yourMethod() { 
     finalClass.methodInFinalClass(); 
    } 
}