1
我有一個要求,我必須編寫一個自定義的XStream MapConverter,只是轉換特定類型的地圖。舉個例子,我想讓我的自定義轉換器只使用Map(String,Date)地圖。我需要通過覆蓋canConvert方法來實現此目的。截至目前,這是我寫的canConvert方法:XStream canConvert問題的參數化的仿製藥
@Override
public boolean canConvert(Class clazz) {
return (!clazz.equals(Object.class) && Map.class.isAssignableFrom(clazz));
}
但是,這將適用於所有類型的地圖。由於「java.lang.Class」沒有公開提供有關參數類型信息的任何方法,因此對於泛型集合,我無法在canConvert方法中實現所需的結果。
我能想到的一種解決方法是圍繞Map(String,Date)創建一個虛擬包裝類,並使用它實現canConvert方法。有人可以提出一個更好的方法來解決canConvert方法中的這個問題嗎?
這被平凡地擴展以支持空映射,但是您可能遇到異構映射的問題(即代碼假定映射中的所有值都是相同類型的,這可能不是真的)。 – ykaganovich 2011-04-12 01:37:39
我不認爲這裏提到的代碼會工作,因爲canConvert()方法中唯一可用的參數是類名稱。當這個方法被XStream框架調用時,不能訪問數據,只能訪問類的類型。 – invinc4u 2011-04-18 20:50:29