Woher wissen, ob ein Objekt eine Instanz des Typs eines TypeTags ist?
Ich habe eine Funktion, die wissen kann, ob ein Objekt eine Instanz von a istManifest
Typ. Ich würde es gerne nach a migrierenTypeTag
Ausführung. Die alte Funktion ist die folgende:
def myIsInstanceOf[T: Manifest](that: Any) =
implicitly[Manifest[T]].erasure.isInstance(that)
Ich habe mit den TypeTags experimentiert und jetzt habe ich diese TypeTag-Version:
// Involved definitions
def myInstanceToTpe[T: TypeTag](x: T) = typeOf[T]
def myIsInstanceOf[T: TypeTag, U: TypeTag](tag: TypeTag[T], that: U) =
myInstanceToTpe(that) stat_<:< tag.tpe
// Some invocation examples
class A
class B extends A
class C
myIsInstanceOf(typeTag[A], new A) /* true */
myIsInstanceOf(typeTag[A], new B) /* true */
myIsInstanceOf(typeTag[A], new C) /* false */
Gibt es einen besseren Weg, um diese Aufgabe zu erfüllen? Kann das parametrierenU
weggelassen werden, mit einemAny
stattdessen (so wie es in der alten Funktion gemacht wird)?