3
我在Google的AutoBean序列化和反序列化中遇到了一些問題。 我有一個包含原始類型和地圖的AutoBean。我可以序列化和反序列化原始類型沒有任何問題,但是當我嘗試讀取反序列化的Map時,我得到NullPointerException。 你以前遇到過類似的問題嗎?有一個代表我的問題的JUnit測試。前兩個斷言是通過,但第三個失敗。使用GWT的AutoBean反序列化與HashMap時出現NullPointerException
public class AutoBeanTest {
@Test
public void test() throws Exception {
MyFactory myFactory = AutoBeanFactorySource.create(MyFactory.class);
Options options = myFactory.options().as();
options.setMyInt(5);
HashMap<Double, Boolean> map = newHashMap();
map.put(8.0, true);
map.put(9.1, false);
options.setMyMap(map);
Options deserialized = AutoBeanCodex.decode(myFactory, Options.class, AutoBeanCodex.encode(AutoBeanUtils.getAutoBean(options)).getPayload()).as();
assertEquals(deserialized.getMyInt(),5);
assertTrue(options.getMyMap().containsKey(8d));
assertTrue(deserialized.getMyMap().containsKey(8d));
}
public interface MyFactory extends AutoBeanFactory {
AutoBean<Options> options();
}
public interface Options {
public int getMyInt();
void setMyInt(int myInt);
Map<Double, Boolean> getMyMap();
void setMyMap(Map<Double, Boolean> myMap);
}
}
'com.google.web.bindery.autobean.shared.AutoBeanCodexTest'檢查出了很多地圖功能包括把/編碼/解碼 - 我的猜測是,在編碼/解碼已經不精確的值之後,使用雙打作爲關鍵詞是不可靠的。儘管如此,還沒有嘗試過運行你的測試。 – 2012-02-11 21:05:50