2016-09-19 72 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(); 
    } 
}