2015-10-13 76 views

回答

4

resueman的回答不正確。確實,Any是所有Scala類的祖先,但與Object不一樣; AnyRef是。 AnyAnyRefAnyVal和母體,這是值類型的祖先:二者那些對應於基元JVM像IntBoolean等,但仍然被認爲是類Scala中類型的系統,和用戶定義的value classes。您可以在下面看到Scala類層次結構(在引入值類和通用特徵之前)(圖片來自http://www.scala-lang.org/old/node/128)。 enter image description here

+0

極好的解釋 – Roushan45

1

答案是否定的。任何是Scala的類層次結構

從文檔兩者的根:
級別任何是Scala的類層次結構的根。 Scala執行環境中的每個類都直接或間接地從這個類繼承。

答案並不像斯卡拉看起來第一眼那麼容易: 斯卡拉並不總是編譯到JVM, 那裏例如是ScalaJs。 (http://www.scala-js.org/

這裏例如Object不是java.lang.Object而是http://www.scala-js.org/api/scalajs-library/0.5.2/index.html#scala.scalajs.js.Object $。

如果Scala編譯爲JVM Any等於Object 但是如果您將Scala編譯爲不同的執行環境,則此關係可能不穩定。