2

实际上,我在一个类中有一种方法,如下所示。

public static final void print(String str){
       System.out.println(str);
}

我想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) { }

在上面,我认为要实现上述情况,我们需要玩访问参数。但是访问是公共+静态+最终的总和。如何仅删除 final 是我的问题?

类级别的最终修饰符也是如此?

4

1 回答 1

7

您只需要像这样清除“最终”位:

public MethodVisitor visitMethod(int access, String name, 
                             String desc, String signature, 
                             String[] exceptions) { 
    return super.visitMethod(
        access & (~Opcodes.ACC_FINAL), 
        name, desc, signature, exceptions);
}
于 2013-02-06T08:47:44.783 回答