Gibt es eine Superklasse oder ein Merkmal und unter der Annahme einer offenen Hierarchie, wie kann ich erzwingen, dass alle erweiterten Klassen eine bestimmte Typklasse implementieren?Erzwingen Sie, dass alle Unterklassen eine bestimmte Typklasse implementieren
Zum Beispiel die Typklasse unter der Annahme Default
trait Default[T] { def default: T }
und einige Merkmal Super
:
trait Super { }
Ich möchte erzwingen, dass die folgende (selbst) ist nicht zulässig:
class A(val i: Int) extends Super
... während das Folgende ist:
Angenommen, das oben Genannte ist möglich, kann ich dann auf den Typ Klassenbeweis für die Subtypen von einer Methode innerhalb Super
zugreifen? Das heißt, so etwas wie:
trait Super {
def magic: Default[this.type] = ???
}