Java HashMap而不是DTO?

Java HashMap而不是DTO?,java,design-patterns,Java,Design Patterns,用HashMap代替DTO有什么不对?不用调用bean的setter和getter,我可以从hashmap中输入和获取值,并在服务之间传递(hashmap实现了可序列化接口)。 我知道这是一种不好的做法。但为什么以及在何种情况下我们会面临这个问题? 提前感谢您的帮助。 没有编译时检查。当您从返回的HashMap中提取某些内容时,您永远无法得到编译时验证,以确定您将其转换为的内容是否有效 难以重构。在许多IDE(如IntelliJ)中,都有很好的工具来重构类的方法名、变量等。当使用字典模式时,这变

用HashMap代替DTO有什么不对?不用调用bean的setter和getter,我可以从hashmap中输入和获取值,并在服务之间传递(hashmap实现了可序列化接口)。 我知道这是一种不好的做法。但为什么以及在何种情况下我们会面临这个问题? 提前感谢您的帮助。

  • 没有编译时检查。当您从返回的HashMap中提取某些内容时,您永远无法得到编译时验证,以确定您将其转换为的内容是否有效

  • 难以重构。在许多IDE(如IntelliJ)中,都有很好的工具来重构类的方法名、变量等。当使用字典模式时,这变得更加困难

  • 返回值的模糊性更大。假设在项目的第1阶段,您返回一个用户对象,并且只使用“getUsername()”方法。然后在第2阶段,您突然需要访问password属性。如果您有一个用户对象,您就可以确切地知道该值是否可访问,以及如何通过查看该类来获取该值。对于HashMap,情况未必如此。如果您无法访问生成HashMap的类的源(在本例中是EJB),您将永远不知道还有哪些其他数据属性可用

希望它能有所帮助……

  • 没有编译时检查。当您从返回的HashMap中提取某些内容时,您永远无法得到编译时验证,以确定您将其转换为的内容是否有效

  • 难以重构。在许多IDE(如IntelliJ)中,都有很好的工具来重构类的方法名、变量等。当使用字典模式时,这变得更加困难

  • 返回值的模糊性更大。假设在项目的第1阶段,您返回一个用户对象,并且只使用“getUsername()”方法。然后在第2阶段,您突然需要访问password属性。如果您有一个用户对象,您就可以确切地知道该值是否可访问,以及如何通过查看该类来获取该值。对于HashMap,情况未必如此。如果您无法访问生成HashMap的类的源(在本例中是EJB),您将永远不知道还有哪些其他数据属性可用


希望它能有所帮助……

这基本上关闭了Java非常严格的类型系统。您将失去Java编译器提供的所有好处。如果你想做这样的事情,使用专门为此目的设计的语言;这基本上关闭了Java非常严格的类型系统。您将失去Java编译器提供的所有好处。如果你想做这样的事情,使用专门为此目的设计的语言;例如Python或Ruby,由于创建HashMap数据结构、插入条目和查找条目的开销,效率较低。HashMap占用了相当多的内存。为什么需要在HashMap中包含用户对象?难道一个
HashMap
就不够了吗?由于创建HashMap数据结构、插入条目和查找条目的开销,它的效率较低。HashMap占用了相当多的内存。为什么需要在HashMap中包含用户对象?难道一个
HashMap
就不够了吗?