我有一个非常古老的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],[java.util.Enumeration[?0]])org.mockito.stubbing.OngoingStubbing[java.util.Enumeration[?0]]
(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})