我有一个非常古老的 Java 方法,需要从 Scala 调用。它采用 java.util.Enumeration 的非泛型版本:
public void someMethod(java.util.Enumeration e) {
...
}
我尝试了以下代码来调用该方法:
target.someMethod(new java.util.Enumeration[String] {
def hasMoreElements = false
def nextElement = throw new NoSuchElementException()
})
但是,这会导致编译器错误:
found: java.lang.Object with java.util.Enumeration[String]
required: java.util.Enumeration[?0] where type ?0
我找到了很多例子来处理 Java 方法返回非泛型值并且您需要在 Scala 中使用泛型类型来处理它的情况。我找不到任何涵盖这种相反情况的东西,我们需要传递非泛型类型。这可能吗?
更多信息 我在 Java 中创建了一个实现并从 Scala 中调用它,它工作得很好。该问题仅在尝试使用 mockito 模拟 Java 方法时表现出来:
(java.util.Enumeration[?0],<repeated...>[java.util.Enumeration[?0]])org.mockito.stubbing.OngoingStubbing[java.util.Enumeration[?0]] <and>
(java.util.Enumeration[?0])org.mockito.stubbing.OngoingStubbing[java.util.Enumeration[?0]]
cannot be applied to (java.lang.Object with java.util.Enumeration[String]{def nextElement(): Nothing})