【发布时间】:2017-01-11 18:25:52
【问题描述】:
我已经定义了一个包装类:
class Wrapper[T](private val value: T)
我想确保 w(v1) == v2 和 v2 == w(v1) iff v1 == v2。第一部分很简单,因为您可以覆盖 Wrapper 类的 equals 方法。但问题是反过来的,例如让 5 == Wrapper(5) 返回 true,实现相等的对称性。在 scala 中是否可以覆盖基本类型(如 Int 或 String)的 equals 方法?在 C++ 中,您可以同时覆盖 operator==(A, int) 和 operator==(int, A) 但在 java 或 scala 中似乎并非如此。
【问题讨论】:
-
第一部分IMO也不容易:
equals有签名equals(x: Any): Boolean和T被删除。 -
你真的需要
==吗?很容易在两个方向上定义一个独立的方法,或者隐式定义另一个方法。您不能真正在Int中覆盖==,因为它已经存在。
标签: java scala equals equality