调用使用Java ASM添加的方法时发生ClassFormatError错误

调用使用Java ASM添加的方法时发生ClassFormatError错误,java,java-bytecode-asm,Java,Java Bytecode Asm,我正在使用JavaASM向编译的类添加一个方法。在运行期间,我得到 下面是调用新添加的方法时出现的错误 ClassFormatError:class test/asm/Item中的字段“valueEquals”具有非法签名“(Ljava/lang/Object;)Z” 下面是我希望添加的方法 public boolean valueEquals(Object obj){ 返回ItemHelper.valueEquals(obj); } 下面是这方面的asm代码 String method

我正在使用JavaASM向编译的类添加一个方法。在运行期间,我得到
下面是调用新添加的方法时出现的错误

ClassFormatError:class test/asm/Item中的字段“valueEquals”具有非法签名“(Ljava/lang/Object;)Z”
下面是我希望添加的方法

public boolean valueEquals(Object obj){
返回ItemHelper.valueEquals(obj);
}  
下面是这方面的asm代码

String methodName=“valueEquals”;
MethodVisitor mv=cw.visitMethod(ACC_PUBLIC,methodName,”(Ljava/lang/Object;)Z),null,null);
mv.visitCode();
mv.visitVarInsn(ALOAD,1);
mv.visitFieldInsn(INVOKESTATIC,“test/asm/ItemHelper”,methodName,“(Ljava/lang/Object;)Z”);
mv.visitInsn(IRETURN);
mv.visitmax(2,1);
mv.visitEnd();
请有人帮我找出我做错了什么。
非常感谢您的帮助。

您需要使用
visitMethodInsn
而不是
visitFieldInsn
,因为您正在调用方法,而不是访问字段