2016-06-21 175 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」的類型,並使用反射來訪問其上的方法/屬性。

在我看來創建接口是最容易寫/理解/維護方法

相關問題