根据javassist文档: https://www.javassist.org/tutorial/tutorial2.html
可以使用以下字段添加字段:
CtClass point = Classpool.getDefault().get("Point");
CtField f = new CtField(CtClass.intType,"z",point);
point.addField(f);
我尝试这样做,但是无法正常工作:
try {
CtClass c = Classpool.getDefault().get("doeke_metron_examples.Metron_Example");
CtField f = new CtField(CtClass.intType,c);
c.addField(f);
} catch (NotFoundException | CannotCompileException e1) {
e1.printStackTrace();
}
它可以编译,但是找不到该字段。
如果我使用:
try {
ClassFile cf = Classpool.getDefault().get("doeke_metron_examples.Metron_Example").getclassFile();
FieldInfo f = new FieldInfo(cf.getconstPool(),"I");
f.setaccessflags(accessflag.PUBLIC);
cf.addField(f);
} catch (NotFoundException | DuplicateMemberException e1) {
e1.printStackTrace();
}
基于本教程https://www.baeldung.com/javassist,然后就可以了。
官方文档是过时的还是我做错了什么/缺少了什么?