77 votes

Scala classOf pour le paramètre type

J'essaie de créer une méthode générique pour les mises à jour d'objet à l'aide de scala / java, mais je ne parviens pas à obtenir la classe d'un paramètre de type.

Voici mon code:

 object WorkUnitController extends Controller {     
 def updateObject[T](toUpdate: T, body: JsonObject){
  val source = gson.fromJson(body, classOf[T]);
  ...
 }
}
 

L'erreur que je reçois est

type de classe requis mais T trouvé

Je sais qu'en Java, vous ne pouvez pas le faire, mais est-ce possible en scala?

Merci!

88voto

Vasil Remeniuk Points 12487

Oui, vous pouvez le faire en utilisant des manifestes:

 object WorkUnitController extends Controller {     
 def updateObject[T: ClassManifest](toUpdate: T, body: JsonObject){
  val source = gson.fromJson(body, classManifest[T].erasure);
  ...
 }
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X