Was versucht Scala mir zu sagen und wie kann ich das beheben? [erforderlich: java.util.List [? 0] wobei? 0]

Ich bin gerade dabei, Scala zu lernen, und heute war ich zuversichtlich, es einem unserer Projekte vorstellen zu können.

Die Anwendung erledigt viele JPA / Hibernate-Aufgaben und ich habe damit begonnen, eine der Java-Schnittstellen in Scala zu implementieren. Alles verlief gut, bis ich versuchte, einen Code für Scala zu übersetzen.

Ich benutze viel Easymock, der Code ist selbsterklärend. Ich denke, das Problem ist, dass Scala es mir nicht erlaubt, eine typisierte java.util.List zurückzugeben, in der eine untypisierte erwartet wird. Leider habe ich keine Ahnung, wie ich Scala dazu bringen soll, etwas zu konvertieren, ohne das Typparameter erwartet werden.

Code, der mein Problem illustriert / reproduziert:

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)
  }
}

Welche den folgenden Compiler-Fehler erzeugt:

[WARNING]  found   : java.util.List[String]
[WARNING]  required: java.util.List[?0] where type ?0
[WARNING]     expect(mockQuery.getResultList).andReturn(mockResult)
[WARNING]                                               ^     

ie Sie sehen können, brauche ich das Mock, um die Schnittstelle von @ zu implementier javax.persistence.Query, das eine java.util.List zurückgibt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage