8

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

4

2 回答 2

4

是和不是。

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

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

于 2013-02-25T13:19:15.083 回答
0

描述了类文件格式。在偏移处10+cpsize有 2 个字节定义此类的访问标志。这些标志之一称为ACC_FINAL (0x0010)。我想您可以掩盖这一点并使该课程成为非最终课程。

于 2013-02-25T12:57:00.840 回答