如何在运行时通过反射扩展类

| 假设我有两个Class A和B,B扩展了A,例如
class B extends A
{
  ....
}
但是,就我而言,类A是加密的,只能在运行时由我的ClassLoader加载(在编译时,由于A.class是加密的,因此无法将其识别为.class文件)。这意味着在编译时不存在A类。 我的问题是: 由于某些方法会覆盖A类中的方法,因此如何编写B类的代码? 如何在运行时指定B类扩展到A类?     
已邀请:
你不能反思。但是您可以使用CGLIB甚至是Javassist     
您可以创建A的虚拟副本,该副本具有您要覆盖的所有方法,仅编译和部署B。 如果在运行时之前不知道要覆盖哪些方法,则需要使用Compiler API生成代码,但是像Objectweb \的ASM这样的库可能要简单得多。我更喜欢ASM,因为它可以轻松生成代码以从模板生成所需内容。也就是说,您不必自己编写所有代码。     

要回复问题请先登录注册