1

次のことを想定しても安全ですか。

scala.AnyRef は、Java との相互運用性のために、toString() と hashCode()を一対の括弧で定義するためです(Martin の提案: https://groups.google.com/forum/#!topic/scala-language/RlV9O1RDmis)。 )、

scala.AnyRef の子孫である Scala 標準ライブラリのすべてのクラスは、toString() と hashCode()を一対の括弧?で定義します。

つまり、標準ライブラリの開発者が、AnyRef の子孫クラスに対して一貫して toString() と hashCode() を使用していると信頼できますか?

編集 - AnyRef の子孫クラスのみを尋ねるように質問を変更しました

4

1 に答える 1

4

必要なのは反例が 1 つだけなので、次のようになります

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

しかし"toString[^(]"、標準ライブラリ ソースを grep すると、他にも何百ものソースが表示されます。

空のパラメーター リストを持つメソッドをパラメーターのないメソッドでオーバーライドする機能が、Scala 2.0 の Scala 言語仕様に明示的に追加されたことに注意してください。

于 2012-09-03T20:14:40.607 に答える