使用javassist添加字段失败的是“官方”方式

根据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,然后就可以了。

官方文档是过时的还是我做错了什么/缺少了什么?

dangwan1 回答:使用javassist添加字段失败的是“官方”方式

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3081979.html

大家都在问