如何扩展期末课?Javassist(反射)



我有一个. 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或针对您的情况编写自己的解决方案类。

相关内容

  • 没有找到相关文章