1
我定义的包装类的首要等于:阶:基本类型
class Wrapper[T](private val value: T)
,我想确保W(V1)== v2和V2 = W(V1)当且仅当V1 = = v2。第一部分很简单,因为您可以覆盖Wrapper类的equals方法。但问题是相反的,使得5 == Wrapper(5)例如返回true,实现了相等的对称性。是否有可能在Scala中,您可以重写像Int或String这样的基本类型的equals方法?在C++中,你可以覆盖运算符==(A,int)和运算符==(int,A),但对java或scala来说似乎不那么重要。
第一部分IMO也并不容易:'equals'具有签名'等于(X:任何):布尔和'T'被擦除。 –
你真的需要'=='吗?很容易在两个方向上定义独立方法,或者隐式定义另一种方法。您无法真正覆盖'Int'中的'==',因为它已经在那里了。 –