这是我使用的代码
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 抛出错误
线程“main”中的异常 java.lang.IllegalArgumentException:值类 java.util.concurrent.locks.ReentrantLock 在 org.objectweb.asm.ClassWriter.a(来源未知)
最佳答案
您不能将对象作为初始值传递。您需要生成代码,该代码将在代码运行时创建对象,而不是在生成代码时创建对象。
关于java - 使用asm 4创建一个新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949136/