Die Frage lässt sich am besten anhand eines Beispiels erklären:
In Java für einen JPA EntityManager kann ich Folgendes tun (Konto ist meine Entitätsklasse):
Account result = manager.find(Account.class, primaryKey);
In Scala ist mein naiver Versuch:
val result = manager.find(Account.class, primaryKey)
Aber wenn ich versuche, es Account.class
in Scala zu verwenden, scheint es mir nicht zu gefallen. Wie kann ich das Objekt java.lang.Class für die Account-Klasse in Scala angeben?
Antworten:
Laut " The Scala Type System ",
Jedoch
classOf[T]
undgetClass
leicht unterschiedliche Werte zurück, was auf die Wirkung von Typ Löschung auf der JVM, im Fall von getClass.Deshalb funktioniert Folgendes nicht :
Es gibt ein Ticket für die Rücksendung von
getClass
.( James Moore berichtet, dass das Ticket "jetzt", dh im November 2011, zwei Jahre später, festgelegt ist.
In 2.9.1 gilt
getClass
jetzt:)
Zurück im Jahr 2009:
Hinweis:
getClass
Eine mögliche Problemumgehung wäre:quelle
classOf[Account]
in Scala entsprichtAccount.class
in Java.quelle