gpt4 book ai didi

java - 字符串与新数据类

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:00:34 24 4
gpt4 key购买 nike

我无意中听到我的两个同事争论是否要创建一个新的数据模型类,该类只包含一个字符串字段及其一个 setter 和一个 getter。然后程序将创建该类的一些对象并将它们放入数组列表中。存储它们的人争辩说应该有一个新类型,而获取数据的人说没有必要经历所有这些麻烦,而你可以简单地存储字符串。

我个人更喜欢创建一个新类型,以便我们知道数组列表中存储了什么,但我没有强有力的论据来说服“获取”数据的人。你?

莎拉

最佳答案

... a new data model class which only contains one string field and a setter and a getter for it.

如果它只是一个 getter,那么一般来说是 String 还是自定义类更好是不可能的。这取决于以下方面:

  • 与其余数据模型保持一致,
  • 预测您是否可能想要更改表示,
  • 预测您是否希望在创建实例、添加辅助方法等时实现验证,
  • 对内存使用或持久性的影响(如果它们甚至相关的话)。

(就我个人而言,默认情况下我倾向于使用普通字符串,并且仅在我知道 future 的表示更改/改进可能是需要。在大多数情况下,稍后将 String 更改为自定义类并不是什么大问题……如果需要的话。)

然而,有人提议为该领域设置一个二传手,这一事实显着改变了事情。该类的实例将是可变的,而 String 的实例则不是。一方面,这可能是有用的;例如你真正需要可变性的地方。另一方面,可变性会使该类在某些情况下使用有些风险;例如在集合中并作为 map 中的键。在其他情况下,您可能需要复制实例。 (这对于不可变的包装类或裸字符串来说是不必要的。)

(简单的答案是去掉 setter,除非你真的需要它。)

还有一个问题是 equals 的语义对于字符串和自定义包装器是不同的。因此,您可能需要覆盖 equalshashCode 以在自定义包装器案例中获得更直观的语义。 (这与 setter 的问题以及集合中类的使用有关。)

关于java - 字符串与新数据类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com