Как узнать, является ли объект экземпляром типа TypeTag?

У меня есть функция, которая может знать, является ли объект экземпляромManifestтип. Я хотел бы перенести его вTypeTag версия. Старая функция следующая:

def myIsInstanceOf[T: Manifest](that: Any) = 
  implicitly[Manifest[T]].erasure.isInstance(that)

Я экспериментировал с TypeTag, и теперь у меня есть эта версия TypeTag:

// 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 */

Есть ли лучший способ решить эту задачу? Может ли параметризованныйU быть опущен, используяAny вместо этого (как это сделано в старой функции)?

Ответы на вопрос(4)

Ваш ответ на вопрос