在 Scala 项目的包中重写字符串 class 的 equals 方法

override equals method for string class in a package in a scala project

所以问题陈述如其所说。我想覆盖特定包中字符串 class 中 equals 的行为。

我环顾四周,大多数情况下似乎没有办法做到这一点。

我最接近在现有 class 上定义方法的是这个 -

implicit class StringImprovements(s: String) {
  def increment = s.map(c => (c + 1).toChar)
}

然后像这样使用它 -

"HAL".increment

这真是太棒了。但是后来我尝试使用相同的方法覆盖 equals,但它不起作用。 我环顾四周,发现这个问题来自 2015 年 - override library method using Scala Implicit

引用上述问题中的一行 -

Implicits are used if scala compiler cannot find method without it, so you can`t override methods with implicits

但是考虑到 scala 的发布非常频繁并且事情一直在变化,我想知道现在是否可以通过这种方式或任何其他方式这样做。

提前致谢!

不,这不可能。如果是的话,我希望有很多库代码会被破坏,因为它期望 String#equals!

的正常行为