Je suis en train d'apprendre Scala et aujourd'hui j'étais confiant de le présenter à l'un de nos projets.Qu'est-ce que Scala essaie de me dire et comment résoudre ce problème? [required: java.util.List [? 0] où type? 0]
L'application fait beaucoup de choses JPA/Hibernate et j'ai commencé à implémenter l'une des interfaces Java dans Scala. Tout s'est bien passé, jusqu'à ce que j'essaie de traduire un code d'unittest à Scala. Je fais beaucoup d'utilisation d'Easymock, le code est assez explicite. Je suppose que le problème est, que Scala ne me permet pas de renvoyer un java.util.List typé où il attend un non typé. Malheureusement, je n'ai aucune idée de la façon de faire Scala lancer quelque chose qui attend des paramètres de type à quelque chose sans.
code qui illustre/reproduit mon problème:
package some.package.name
import java.util.ArrayList
import java.util.List
import javax.persistence.Query
import org.easymock.EasyMock._
import org.junit.Assert._
import org.junit.Test
class MyGreatScalaTest {
@Test
def testSomething() : Unit = {
val mockQuery: Query = createMock(classOf[Query])
val mockResult: List[String] = new ArrayList[String]
mockResult.add("great value")
expect(mockQuery.getResultList).andReturn(mockResult)
replay(mockQuery)
assertEquals(
(mockQuery.getResultList.asInstanceOf[List[String]]).get(0),
"great value")
verify(mockQuery)
}
}
qui produit l'erreur du compilateur suivant:
[WARNING] found : java.util.List[String]
[WARNING] required: java.util.List[?0] where type ?0
[WARNING] expect(mockQuery.getResultList).andReturn(mockResult)
[WARNING] ^
Comme vous pouvez le voir, je dois la maquette pour mettre en œuvre l'interface de javax.persistence.Query, qui retourne un java.util.List.
Peut-être déclarer 'mockResult: Liste [_]' au lieu, et perdre les 'asInstanceOf' dernier sur? –