为什么kotlin中的data class 被设计成final?
来源:5-8 偏函数

慕田峪8379950
2017-11-04
rt。
写回答
3回答
-
主要是考虑到 data class 的equals 的问题。如果data class 可以被继承,那么就会出现 x.equals(y) == true,y.equals(x) == false 的情形。
关于这个问题,在 scala 当中也有过很多讨论,亲可以参考下 StackOverflow 中的这个回答~What is *so* wrong with case class inheritance?
012017-11-04 -
慕田峪8379950
提问者
2017-11-04
未能解惑,如果是继承的子类,自然是要重写equals的,这样子类自然比父类多几个属性,自然是不能相等的啊,如果需要作比较那就需要 显式地强制转换成父类啊。
又衍生出一个疑问 为什么equals传入的值为Any而不是this?类型都不相同为什么可以比较相等?另外希望能帮我解决下我提出的另一个提问。感激不尽。
052017-11-30 -
慕田峪8379950
提问者
2017-11-04
未能解惑,如果是继承的子类,自然是要重写equals的,这样子类自然比父类多几个属性,自然是不能相等的啊,如果需要作比较那就需要 显式地强制转换成父类啊。
又衍生出一个疑问 为什么equals传入的值为Any而不是this?类型都不相同为什么可以比较相等?另外希望能帮我解决下我提出的另一个提问。感激不尽。
062017-11-06
相似问题