Scalaにおける**シングルトンオブジェクト(Singleton Object)**とは、クラスのインスタンスを1つだけ作成し、それをグローバルに共有したい場合に使用される構文で、objectキーワードを使って定義されます。これはScalaのオブジェクト指向機能の一部であり、Javaでのstaticメンバーの代替手段ともなります。
特徴
1. インスタンスは1つだけ
objectで定義されたシングルトンオブジェクトは、JVM上で1つのインスタンスだけが生成され、プログラム全体で共有されます。
2. newキーワードは不要
通常のクラスとは異なり、objectはnewでインスタンス化することはできません。すでに作成されたインスタンスが自動的に使われます。
3. グローバルなユーティリティとして使用
Javaのstaticメソッドやstatic変数のように、ユーティリティ関数や定数を定義するためによく使われます。
基本構文と例
上記のようにobjectを定義すると、次のように使用できます:
クラスとの違い
Scalaにはclassとobjectがあり、それぞれ用途が異なります。
| キーワード | インスタンス化 | 用途 |
|---|---|---|
class |
必要 (new) |
データ構造やロジック |
object |
不要 | シングルトン・ユーティリティ |
コンパニオンオブジェクトとの関係
classと同じ名前のobjectをコンパニオンオブジェクト(companion object)と呼びます。これは、クラスのprivateメンバーにアクセスできる特別なオブジェクトです。
このようにapplyメソッドを用意することで、次のように簡潔にインスタンス化できます:
まとめ
-
objectはScalaにおけるシングルトンの構文で、インスタンスは1つのみ。 -
staticの代替として使われ、ユーティリティ的な機能を提供する。 -
classと同名のobjectはコンパニオンオブジェクトとして、クラスの補助的な役割を担う。 -
objectは明示的にインスタンス化せずにそのまま使用できる。
生成日:2025/05/04