我有一个. jar文件,它有大量的类。第一,我需要设置为final,所以我不能扩展它。有一种方法,我基本上必须扩展和修复,否则一切都会崩溃。我该怎么做呢?我知道Reflection和Javassist可以用于此,但我不知道如何使用。任何其他工具也是可以接受的,只要它能工作。
例如,您可以在Final类周围使用包装器并扩展其功能,例如:
public class YourClass {
private FinalClass finalClass;
public YourClass {
finalClass = new FinalClass():
}
public void yourMethod() {
finalClass.methodInFinalClass();
}
}
您不能使用反射来修改现有的类定义。
如果该JAR的许可证允许,我会建议一个不同的解决方案:反编译那个类;丢掉最后的关键字;并重新构建类和JAR文件
这是唯一的健壮的方法来解决你的问题。
Final类被标记为Final是有原因的,所以理想情况下您不应该尝试修改该类。您应该考虑使用其他api或针对您的情况编写自己的解决方案类。