Puis-je effectuer une correspondance sur un paramètre de type dans Scala pour voir s'il implémente un trait?

Je voudrais avoir une méthode qui renvoie une classe d'un certain type, mais je veux la méthode pour se comporter différemment selon si oui ou non la classe étend un trait particulier comme suit:


case class ClassA extends TraitA
case class ClassB extends TraitB
case class ClassC extends TraitA
...
def myfunc[T]():T = {
  T match {
    case TraitA => //return new T in a particular way 
    case TraitB => //ditto
  }
}

Est-ce possible, ou suis-je aller à ce sujet dans le mauvais sens?

Grâce

source d'informationauteur codefly