2014-10-16 52 views
0

我正在構建一個數據驅動的測試系統。我之前用XML做過,但json給了我一些有趣的問題。基於屬性文件設置實例化泛型

對於每個請求和響應類型json,我在我的腳本中指定pojo類型的設置。這個類型被實例化爲一個傳遞給jackson的類對象,以將json編組爲一個可用的pojo。所以它是這樣的:

"responseType": "java.util.List", 

最終被抽到

Class<?> reponseType = null; 
try { 
    if (d.shouldPass) { 
     reponseType = Class.forName(d.responseType); 
    } 
} catch (ClassNotFoundException e) { 
    throw new RequestResponseTypeInvalid(testName); 
} 

,我有可用的類信息在傑克遜使用。我的問題是我需要這樣做:

"responseType": "java.util.List<foo>", 

否則複雜的json類型解析爲hashmaps而不是pojo的。如果需要,我想我可以變得富有創造力,並將一些東西從hashmap轉移到pojo,但我想知道是否有任何直接的方法來做到這一點。

我想另一種方法是實現一個工廠類,我可以在屬性文件中說list_foo並將工廠類映射到實際的類對象。這不會很困難,但不像使用該屬性那麼簡單。

謝謝

回答

0

你不能這樣做,你希望,我害怕。泛型只是編譯時的事情,並且不能在運行時以這種方式使用,因爲type erasure

您可以做的最好的方法是獲得一些list_foo屬性,並將這些屬性顯式映射到代碼中的List<Foo>等等。但是你不能通過反思去做。

+0

是的,我很害怕這個。哦,我會創建一個工廠。謝謝 – scphantm 2014-10-16 20:46:35