我在运行时使用javassist创建了一个pojo类。我正在尝试使用我创建的pojo将XML文件转换为java对象,使用jackson mapper,如下所示,
//test.proper.MyRuntimeClass is the Pojo I created using javassist.
CtClass ctClass = classPool.getCtClass("test.proper.MyRuntimeClass");
mapper.readValue(<InputStream>, Class.forName(ctClass.getName()));
我能够解析XML文件但是,我无法将MyRuntimeClass类型的变量分配给上面的行。
我想要这样的东西。
test.proper.MyRuntimeClass myClass = mapper.readValue(<InputStream>, Class.forName(ctClass.getName()));
请让我知道实现这一目标的正确方法。提前谢谢。
答案 0 :(得分:1)
您无法在“常规”java代码中使用该类。你需要编译“常规”java代码,编译器需要编译它需要的所有类的字节码。
但你可以解决这个问题:
在我看来,创建界面是最容易编写/理解/维护的方法
答案 1 :(得分:0)
您需要先将CtClass转换为Class。然后将它作为Class传递给Mapper。
Class MyRuntimeClass = ctClass.toClass();
mapper.readValue(<InputStream>, MyRuntimeClass);
更多细节在这里 - Why do I have to call .toClass() after changing a method body with Javassist?