以下の内容はhttps://unageanu.hatenablog.com/entry/20080508/1210248369より取得しました。


Object

ScalaのObjectについて。The Scala LanguageSpecificationを読んでポイントをまとめます。

使いみち

定数(static変数)やstaticメソッドを作るのに使う。逆にscalaにはstaticがない。

内部的にはどうなってるの?

次のようなobjectの定義は、

object X extends T

内部的には↓のようになっているとのこと。

final class X$cls extends T
private var X$instance = null
final def X = {
  if (X$instance == null) X$instance = new X$cls
  X$instance
}
  • finalな専用クラスが1コできる。
  • インスタンス必要になったときに作成される。

ふむ。

名前空間がクラスと違う

クラスの名前空間とオブジェクトの名前空間であるため、同名のクラスとオブジェクトは共存できる。

class Foo {
  def a = "class"
}

// クラスと同名のオブジェクト。
// 名前空間が違うので共存できる。
object Foo {
  def a = "object"
}

println( Foo.a ) // object
println( (new Foo).a ) // class

JavaScript書く人は注意。




以上の内容はhttps://unageanu.hatenablog.com/entry/20080508/1210248369より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14