聲明集合瞬態有什麼問題嗎? transient Map<String, Car> cars = new HashMap<>()
是在Owner
實例中聲明的,但是該序列化的類不是Car
類。已聲明的瞬態isMap在對象被反序列化後無法工作
當程序首次Owner
實例中運行它創建Car
並將其插入收集Cars
,但是運行程序第二遍的時候,Owner
進行反序列化,它正確地創建Car
實例,但添加到收藏cars.put(key, object)
時,它會導致NullPointerException
。也只有在反序列化後運行cars.containsKey(regNumIn)
會導致異常而不是給出真或假。看起來在Owner
重新創建後,第二次運行創建了新的hashMap
。
是否必須對hasCode()和equals()做任何事情?我沒有宣佈這些,如果它們由Netbeans IDE自動聲明,該程序根本不起作用。
Java中的'transient'關鍵字用於指示不應序列化字段。所以反序列化後,你有'null'而不是你的地圖 – ByeBye