Wenn ich 1 Zug und 2 Objekte:In Scala, wie auf den ClassTag des implementierten abstrakten Typs in allen Unterklassen verweisen?
trait MyClass {
type T <: MyClass
def foo(): ClassTag[T] = {...}
}
object ChildClass1 extends MyClass {
type T = String
}
object ChildClass2 extends MyClass {
type T = Option[String]
}
ist es möglich, foo() in MyClass zu implementieren, so dass ChildClass1.foo() ergibt ClassTag [Zeichenfolge] und ChildClass2.foo() ergibt ClassTag [Möglichkeit].
Wenn nicht, was ist der einfachste Weg, um es zu umgehen? Es sollte angemerkt werden, dass die Implementierung von T innere Klassen/Objekte sein kann, so dass Hacking-Reflektion einige Nebenwirkungen haben kann.
Warum brauchen Sie überhaupt Reflexion? In Scala gibt es normalerweise einen Weg um ihn herum. – Reactormonk
Ja, obwohl eine ausführlichere und unnötige Art zu wiederholen, was der Compiler bereits wissen sollte – tribbloid