Scala标准库对toString()和hashCode()的使用

时间:2012-09-03 20:09:51

标签: scala consistency

假设:

是否安全

因为scala.AnyRef使用一对括号定义了toString()和hashCode(),因为它与Java的互操作性(正如Martin在https://groups.google.com/forum/#!topic/scala-language/RlV9O1RDmis中所建议的那样),

Scala标准库中的每个类是scala.AnyRef的后代,用一对括号定义toString()和hashCode()

换句话说,我是否可以相信标准库的开发人员对于AnyRef的后代类使用toString()和hashCode()是一致的?

编辑 - 更改了问题,仅询问AnyRef的后代类

1 个答案:

答案 0 :(得分:4)

由于您只需要一个反例,here you go

object Int extends AnyValCompanion {
  ...
  override def toString = "object scala.Int"
}

但是,对标准库源上的"toString[^(]"进行grepping会产生数百个其他内容。

请注意,能够使用参数为空的参数列表覆盖方法,并且参数为Scala语言规范中的Scala语言规范was explicitly added