A questão é melhor explicada por um exemplo:
Em Java para um JPA EntityManager, posso fazer o seguinte (Conta é minha classe de entidade):
Account result = manager.find(Account.class, primaryKey);
Em Scala, minha tentativa ingênua é:
val result = manager.find(Account.class, primaryKey)
Mas quando tento usar Account.class
no Scala, parece não gostar disso. Como posso especificar o objeto java.lang.Class para a classe Account no Scala?
Respostas:
De acordo com " The Scala Type System ",
No entanto,
classOf[T]
egetClass
retorne valores ligeiramente diferentes, refletindo o efeito de apagamento de tipo na JVM, no caso de getClass.É por isso que o seguinte não funcionará :
Existe um ticket referente ao tipo de retorno
getClass
.( James Moore relata que o ticket é "agora", ou seja, novembro de 2011, dois anos depois, foi corrigido.
Na 2.9.1,
getClass
agora:)
Em 2009:
Nota: em relação a
getClass
, uma possível solução alternativa seria:fonte
classOf[Account]
em Scala é equivalente aAccount.class
em Java.fonte