Die Methode apply

Einen besonderen Status hat eine Methode mit dem Namen apply. Werden hinter einer Instanz oder Klassennamen runde Klammern verwendet, bedeutet dies, das eine Methode mit dem Namen apply auf dem Begleitobjekt (engl. companion object) aufgerufen wird. Die Methode kann Parameterlos oder mit Parametern versehen sein. Voraussetzung zur Nutzung dieser Möglichkeit ist jedoch, dass es sich bei der zugehörigen Klasse um eine case class handlet.

Ein Beispiel mit einer List soll diese Methodik verdeutlichen:

val a = List(1,2,3)    
println(a(1))      
          

Das obige Beispiel ist eine Kurzschreibweise für nachfolgende Quelltextzeilen:

val a = List.apply(1,2,3)
println(a.apply(1))          
          

Die Funktionsweise von apply ist nicht auf Klassen der Standardbibliothek beschränkt, sondern funktioniert auch für alle selbstdefinierten case classes.

object MyApply{
  def apply() = new MyApply(0)
}

case class MyApply(v1 : Int) {
  override def toString = "My value is "+v1
  
  def apply(v2 : Int) = v1 + v2
}

object MyApplyTest {

  def main(args: Array[String]) {
    val t = MyApply(3)
    println(t(3))
  }
}
timpt.de - X2H V 0.10