Java 如何使用ASM更改方法的最终修改器&;班
实际上,我在一个类中有一个方法,如下所示Java 如何使用ASM更改方法的最终修改器&;班,java,java-bytecode-asm,Java,Java Bytecode Asm,实际上,我在一个类中有一个方法,如下所示 public static final void print(String str){ System.out.println(str); } 我想从met hod中删除final修饰符。这样做之后,我的方法将如下所示: public static void print(String str){ System.out.println(str); } 使用ASM,我们将在中获取此信息 public MethodVisit
public static final void print(String str){
System.out.println(str);
}
我想从met hod中删除final
修饰符。这样做之后,我的方法将如下所示:
public static void print(String str){
System.out.println(str);
}
使用ASM,我们将在中获取此信息
public MethodVisitor visitMethod(int access, String name,
String desc, String signature,
String[] exceptions) { }
在上面,我认为要实现上述情况,我们需要使用access参数。
但访问是公共+静态+最终的总和。
如何删除唯一的最终是我的问题
类级最终修饰符也是如此?您只需清除“最终”位,如下所示:
public MethodVisitor visitMethod(int access, String name,
String desc, String signature,
String[] exceptions) {
return super.visitMethod(
access & (~Opcodes.ACC_FINAL),
name, desc, signature, exceptions);
}