Je suis en train de mettre en œuvre un trait Scala qui gère les détails de l'interface avec une bibliothèque Java qui nous oblige à créerComment puis-je obtenir la classe d'exécution d'un type paramétrés dans un trait Scala
Ce que je veux faire est quelque chose comme:
trait SomeTrait[A] extends JavaAPI {
def foo = {
callApi(classOf[A])
}
override def bar = {
foo
}
}
Notez que la barre est prépondérant en fait une méthode d'une classe de base, donc je ne peux pas changer sa signature.
J'ai essayé plusieurs variantes avec Manifests, etc., mais je n'arrive pas à le faire fonctionner. Est-il possible d'obtenir la classe d'exécution d'un type paramétré?
Ceci est proche, mais j'ai besoin d'appeler foo() à l'intérieur du trait. Lorsque j'essaie avec cette approche, j'obtiens une erreur de compilation: "Impossible de trouver la valeur implicite pour le paramètre ev: Manifest [A] .J'ai mis à jour mon exemple pour refléter la spécification (plus précise) –
' ev.erasure' est obsolète, vous devriez maintenant utiliser 'ev.runtimeClass'. – wizulus