2016-06-21 120 views
0

我在运行时使用javassist创建了一个pojo类。我试图用我创建的POJO,使用杰克逊映射器来转换XML文件到Java对象,如下图所示,如何创建一个使用javassist创建的类的变量

//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

IMO你真难为自己做这个。你的“运行时间班”将没有任何方法,没有任何关于它的“班级”将会有价值。我认为如果你只是使用一个Datatype集合,可能是一个'Map',会更容易。你能解释一下为什么你不想这么做吗? – ControlAltDel

回答

1

你不能在“常规”java代码中使用该类。您需要编译“常规”java代码,以便编译器需要它使用的类的所有字节代码。

但你可以得到周围:

  • 创建了Javassist所生成的类实现一个接口,并使用该类型的变量“MyClass的”
  • 生成使用MyRuntimeClass与javasisst
  • 代码
  • 使用Object作为“myClass”的类型,并使用反射来访问其上的方法/属性。

在我看来创建接口是最容易写/理解/维护方法