假设我有一个
class Foo(){
public final static int bar = -1;
}
反汇编的字节码看起来像这样
super public class Foo
version 51:0
{
public static final Field bar:I = int -1;
public Method "<init>":"()V"
stack 1 locals 1
{
aload_0;
invokespecial Method java/lang/Object."<init>":"()V";
return;
}
} // end Class Foo
是的,这让我很惊讶。我本来希望有一个<clinit>
包含分配的方法bar
,然后我可以替换它。final
(当我删除修饰符时确实会发生这种情况。)
如何更改final
字段的值?我要上钩什么?