是否有可能以某种方式继承修改字节码的最终类?

是否有可能继承使用字节码操作的最终类?


是和不是。

您可以使用字节码操作将final类更改为非final的。 这甚至不会破坏二进制兼容性,所以不存在类加载器/验证器错误的风险。

但是,您必须将字节码修改应用于final类本身。 您不能对子类进行字节码操作,以使其从final父类继承。 或者更确切地说,如果你这样做,修改后的子类将在与final父类一起加载时被验证者拒绝。


这描述了类文件格式。 在偏移量10+cpsize有2个字节定义了这个类的访问标志。 其中一个标志称为ACC_FINAL(0x0010)。 我想你可以掩盖这一点,并让这个班不是最终的。

链接地址: http://www.djcxy.com/p/69629.html

上一篇: Is it possible to inherit a final class modifying bytecode somehow?

下一篇: Proper creation of a cross