Frage

Lassen Sie uns sagen, ich habe einige Klassen wie folgt aus:

abstract class View(val writer: XMLStreamWriter) {
    // Implementation
}

class TestView(writer: XMLStreamWriter) extends View(writer) {
    // Implementation
}

Die meisten Unterklassen Ansicht werden nicht anders Konstruktorargumente zu nehmen. Ich möchte in der Lage sein, so etwas zu schreiben:

class TestView extends View {
    // Implementation
}

Gibt es eine Abkürzung Subklassen zu schreiben, so dass Sie die Konstruktor args müssen sie (auf der übergeordneten Klasse nicht explizit definieren und übergeben, so dass ich auf alle meine Unterklassen nicht neu zu schreiben, wenn ich die Unterschrift ändern die übergeordnete Klasse)?

War es hilfreich?

Lösung

Ich fürchte, Sie dort auf eigene Faust. Konstruktoren sind nicht oder polymorph und Unterklasse Konstrukteuren geerbt, während sie müssen und immer einen Konstruktor für ihre unmittelbare Superklasse zu tun berufen, nicht und kann nicht automatisch geschehen, es sei denn, es gibt einen Null-arg Konstruktor, der durch die Erwähnung impliziert wird von der Name der übergeordneten Klasse in eine "extends" Klausel.

Andere Tipps

abstract class View {
    def writer: XMLStreamWriter
    // Implementation
}

class TestView(val writer: XMLStreamWriter) extends View {
    // Implementation
}

Ist das, was Sie suchen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top