0

这是我使用的代码

    String fieldName = "lock";
    String fieldType = "Ljava/util/concurrent/locks/Lock;";
    Object initValue = new ReentrantLock();

    cw.visitField(ACC_PUBLIC, fieldName, fieldType, null, initValue).visitEnd();

我试图添加一行“Lock lock = new ReentrantLock();” 但 asm 抛出错误

线程“主”java.lang.IllegalArgumentException 中的异常:org.objectweb.asm.ClassWriter.a 中的值类 java.util.concurrent.locks.ReentrantLock(未知来源)

4

1 回答 1

2

您不能将对象作为初始值传递。您需要生成将在代码运行时创建对象的代码,而不是在您生成代码时。

于 2013-09-22T21:56:58.813 回答