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

时间:2013-02-25 12:20:42

标签: java bytecode java-bytecode-asm

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

2 个答案:

答案 0 :(得分:4)

是和否。

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

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

答案 1 :(得分:0)

This描述了类文件格式。在偏移10+cpsize处,有2个字节定义了该类的访问标志。其中一个标志称为ACC_FINAL (0x0010)。我想你可以掩盖那一点,让那个课程成为非最终的。