是否可以使用字节码操作继承最终类?
答案 0 :(得分:4)
是和否。
您可以使用字节码操作将final
类动态更改为非final
。这甚至不会破坏二进制兼容性,因此不存在类加载器/验证器错误的风险。
但是,您必须将字节码修改应用于final
类本身。您不能对子类进行字节码操作,以使其从final
父类继承。或者更确切地说,如果这样做,当与final
父类一起加载时,验证者将拒绝修改后的子类。
答案 1 :(得分:0)
This描述了类文件格式。在偏移10+cpsize
处,有2个字节定义了该类的访问标志。其中一个标志称为ACC_FINAL (0x0010)。我想你可以掩盖那一点,让那个课程成为非最终的。