gpt4 book ai didi

java - scala:重写基本类型的等于

转载 作者:行者123 更新时间:2023-11-30 02:48:54 24 4
gpt4 key购买 nike

我定义了一个包装类:

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 中似乎并非如此。

最佳答案

如何使用隐式来完成此操作(请注意,此处不能使用 ==equals):

import scala.reflect.ClassTag

implicit class Wrapper[T : ClassTag](val value: T) {
def isEqual(other: Any) = other match {
case x: T =>
x == value
case x: Wrapper[T] =>
x.value == value
case _ =>
false
}
}

5 isEqual (new Wrapper(5)) // true
(new Wrapper(5)) isEqual 5 // true

关于java - scala:重写基本类型的等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39312695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com