2015-04-06 61 views
1

使用HashMap而不是DTO會出現什麼問題?與其調用bean的setter和getter,我可以放置並從hashmap中獲取值,並在服務之間傳遞它(hashmap實現Serializable接口)。 我知道這是一個不好的做法。但爲什麼和在哪種情況下我們會面臨這個問題? 感謝您的幫助提前。HashMap而不是DTO?

+0

這基本上變成Java的非常嚴格的類型系統關閉。你失去了Java編譯器提供的每一個好處。如果你想做這樣的事情,請使用專門爲此目的設計的語言;例如Python或Ruby。 – 2015-04-06 12:08:59

回答

5
  • 沒有編譯時間檢查。當你從返回的HashMap中抽出一些東西時,你永遠不會得到編譯時驗證,你所投的東西是有效的。

  • 難以重構。在許多IDE中(比如IntelliJ),有很好的工具來重構類的方法名稱,變量等。當使用字典模式時,這變得更加困難。

  • 返回值更加模糊。在一個項目的階段1中說,你得到一個用戶對象,只使用「getUsername()」方法。然後在階段2突然之間,您需要訪問密碼屬性。如果你有一個用戶對象,你確切地知道該值是否可訪問,以及如何通過簡單地查看該類來獲取它。 HashMap不一定是這種情況。如果您無法訪問生成HashMap的類的源(在本例中爲EJB),則永遠不會知道還有哪些其他數據屬性可用。

希望它是有幫助的...

+0

由於創建HashMap數據結構,插入條目並查找它們的開銷,效率較低。而HashMap佔用更多的內存。 – 2015-04-06 12:17:37

+0

爲什麼需要在HashMap中擁有User對象?不會有'HashMap '足夠嗎? – CKing 2015-04-06 16:46:26

相關問題