Begleitobjekte in Scala
In diesem Tutorial werden die Companion-Objekte mit laufenden Beispielen in Scala erläutert.
Begleitobjekte in Scala
Ein Begleitobjekt ist ein Objekt mit demselben Namen wie die Klasse und wird in einer ähnlichen Datei als Klasse deklariert.
Wenn wir beispielsweise ein Color
-Objekt mit demselben Namen wie der Klassenname haben und die Datei als Color.scala
gespeichert wird, wird dieses Objekt in Scala als Begleitobjekt betrachtet.
Beispiel:
class Color {
}
object Color {
}
// Color.scala
Der Vorteil der Verwendung eines Companion-Objekts besteht darin, dass nun sowohl die Klasse als auch das Objekt auf die privaten Mitglieder des jeweils anderen zugreifen können. Scala verwendet das statische Konzept nicht, aber wir können die Begleitobjekte zum Sammeln für ein ähnliches Konzept verwenden.
Erstellen Sie Objekte, ohne das Schlüsselwort new
zu verwenden
Durch das Hinzufügen einer apply()
-Methode zu einem Companion-Objekt können wir Objekte erstellen, ohne das Schlüsselwort new
zu verwenden.
Beispiel:
class Color(val name: String){
private var _defaultname: String = "White"
def get():String = _defaultname
}
object Color {
def apply(name: String): Color = new Color(name)
}
object MyClass {
def main(args: Array[String]) {
val color = Color("Red")
println(color.name)
}
}
Ausgang:
Red
Dekonstruieren Sie die Instanz einer Klasse
Ebenso können wir die Methode unapply()
verwenden, um die Instanz der Klasse zu dekonstruieren. Wir erhalten einen Fehler, wenn wir versuchen, nach der Funktion unapply()
auf seine Mitglieder zuzugreifen.
Beispiel:
class Color(val name: String){
private var _defaultname: String = "White"
def get():String = _defaultname
}
object Color { // unapply function
def unapply(name: String): Color = new Color(name)
}
object MyClass {
def main(args: Array[String]) {
val color = Color("Red")
println(color.name)
}
}
Ausgang:
error: Color.type does not take parameters
val color = Color("Red")
^