La question est mieux expliquée par un exemple:
Dans Java pour un EntityManager JPA, je peux faire ce qui suit (le compte est ma classe d'entité):
Account result = manager.find(Account.class, primaryKey);
Dans Scala, ma tentative naïve est:
val result = manager.find(Account.class, primaryKey)
Mais quand j'essaye d'utiliser Account.class
Scala, ça ne semble pas aimer ça. Comment puis-je spécifier l'objet java.lang.Class pour la classe Account dans Scala?
Réponses:
Selon " The Scala Type System ",
Cependant,
classOf[T]
etgetClass
renvoie des valeurs légèrement différentes, reflétant l'effet de l'effacement de type sur la JVM, dans le cas de getClass.C'est pourquoi ce qui suit ne fonctionnera pas :
Il existe un ticket concernant le type de retour de
getClass
.( James Moore rapporte que le ticket est "maintenant", c'est-à-dire novembre 2011, deux ans plus tard, corrigé.
En 2.9.1, fait
getClass
maintenant:)
De retour en 2009:
Remarque: concernant
getClass
, une solution de contournement possible serait:la source
classOf[Account]
en Scala équivaut àAccount.class
en Java.la source