我当然排除任何涉及违反数据类规则的原因。所以如果你知道你不需要继承它(例如,我的理解是规则在Kotlin 1.1中消失了)。
答案 0 :(得分:3)
data
修饰符使Kotlin为基于主构造函数的大多数公共(%80)方案生成常见方法,如toString
,hashCode
,equals
。
这显示了为什么只有少数类应为data
的三个原因:
大多数非数据类都具有在主构造函数和类主体中定义的混合属性。此外,主构造函数通常具有非字段的参数(但有助于初始化正文中更复杂的字段)。换句话说,data
具有非常严格的要求,常规类很少满足这些要求。
除了第1点之外,创建类data
可能会损害其可扩展性。即使所讨论的类的布局符合data
类的规则,稍后有人可能想要在类的主体中添加另一个属性。在这种情况下,他将不得不手动覆盖hashCode
因为它可能在某处使用。
标记类data
会向读取您打算将此类用作数据职业的代码的人发送消息。标记其他类将会产生误导。
答案 1 :(得分:-1)
因为OO编程的基本原则之一:封装。 通过设计,我们故意限制其他代码可以与模块交互的方式。这为我们提供了可维护性(更强大的重构)和可读性