使用HashMap而不是DTO會出現什麼問題?與其調用bean的setter和getter,我可以放置並從hashmap中獲取值,並在服務之間傳遞它(hashmap實現Serializable接口)。 我知道這是一個不好的做法。但爲什麼和在哪種情況下我們會面臨這個問題? 感謝您的幫助提前。HashMap而不是DTO?
回答
沒有編譯時間檢查。當你從返回的HashMap中抽出一些東西時,你永遠不會得到編譯時驗證,你所投的東西是有效的。
難以重構。在許多IDE中(比如IntelliJ),有很好的工具來重構類的方法名稱,變量等。當使用字典模式時,這變得更加困難。
返回值更加模糊。在一個項目的階段1中說,你得到一個用戶對象,只使用「getUsername()」方法。然後在階段2突然之間,您需要訪問密碼屬性。如果你有一個用戶對象,你確切地知道該值是否可訪問,以及如何通過簡單地查看該類來獲取它。 HashMap不一定是這種情況。如果您無法訪問生成HashMap的類的源(在本例中爲EJB),則永遠不會知道還有哪些其他數據屬性可用。
希望它是有幫助的...
由於創建HashMap數據結構,插入條目並查找它們的開銷,效率較低。而HashMap佔用更多的內存。 – 2015-04-06 12:17:37
爲什麼需要在HashMap中擁有User對象?不會有'HashMap
- 1. 使用HashMap中,而不是ArrayList的
- 2. Hashmap keySet()返回值而不是密鑰
- 3. Ecore建模生成一個HashMap dto持有一個HashMap
- 4. 如何將HashMap添加到HashMap的HashMap中而不被覆蓋
- 5. c#比較對象而不創建dto
- 6. ASP.NET MVC 2的驗證使用DTO的,而不是域實體
- 7. 使用MyBatis的駱駝路由傳遞HashMap的ArrayList而不是HashMap
- 8. 爲什麼LinkedList作爲HashMap的存儲桶實現而不是另一個Hashmap?
- 9. 在HashMap而不是數據庫中搜索
- 10. 如何顯示一個HashMap爲空{}而不是null
- 11. 我可以在Java中使用JSONObject而不是HashMap嗎?
- 12. 最佳實踐 - HashMap而不是參數列表,好主意?
- 13. 樹圖檢索HashMap的值而不是樹映射值Java
- 14. HashMap(key:String,value:ArrayList)返回一個Object而不是ArrayList?
- 15. 類(而不是對象)中的一個HashMap
- 16. 對其屬性的HashMap對象進行排序而不是值
- 17. 何時使用Android的ArrayMap而不是HashMap?
- 18. 爲什麼我在Firebase-RealDatabase上獲取ArrayList而不是HashMap?
- 19. 重命名的HashMap的鍵值,而不是重新插入
- 20. 在MyBatis(而不是List)中返回結果的HashMap
- 21. 的Hashmap返回引用,而不是拷貝
- 22. 如何按值打印HashMap而不是按Jquery鍵打印
- 23. 爲什麼HashMap使用TreeNode而不是Comparable鍵?
- 24. Java的不是從HashMap的
- 25. HashMap的不是JAXB類
- 26. 它是不好的做法,在DTO
- 27. DTO vs VM - 使用還是不使用?
- 28. scala.collection.mutable中的HashMap是不變的,但不可變.HashMap是協變的,爲什麼?
- 29. 要HashMap或不要HashMap?
- 30. 是否存在使用DTO而不必複製域對象屬性的模式?
這基本上變成Java的非常嚴格的類型系統關閉。你失去了Java編譯器提供的每一個好處。如果你想做這樣的事情,請使用專門爲此目的設計的語言;例如Python或Ruby。 – 2015-04-06 12:08:59