...一个新的数据模型类,它只包含一个字符串字段,一个setter和一个getter.
如果它只是一个getter,那么通常不能说String或自定义类是否更好.这取决于:
(就个人而言,我倾向于默认使用普通的字符串,并且仅使用自定义类,例如,我知道可能需要未来的表示更改/细化.在大多数情况下,它不是以后将String更改为自定义类的巨大问题......如果需要的话.)
然而,有人建议成为该领域的制定者,这一事实将会发生重大变化.该类的实例将是可变的,而String的实例则不是.一方面,这可能是有用的; 例如,你真正需要可变性的地方.另一方面,可变性会使该类在某些情况下使用有些风险; 例如在集合中和作为地图中的键.在其他情况下,您可能需要复制实例.(对于不可变的包装类或裸String,这是不必要的.)
(简单的答案是摆脱二传手,除非你真的需要它.)
还有一个问题equals是String和自定义包装器的语义会有所不同.因此,您可能需要覆盖equals并hashCode在自定义包装器案例中获得更直观的语义.(这与setter的问题有关,并且在集合中使用了类.)
小智 7
如果它与数据模型的其余部分相匹配,请将其包装在类中.
也就是说,关键是它是否与您数据模型的其余设计相匹配 ......与您已有的一致.