2
我有一个非常古老的Java方法,我需要从Scala调用。它需要的java.util.Enumeration的非通用版本:调用Java方法,不从Scala采取通用类型
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调用它,它工作得很好。
(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})
您正在使用哪个版本的scala?我使用的是2.9.2,你的示例代码编译得很好。 – 2012-07-30 14:25:23
如果您找到了解决方案,您应该将其写为答案。 – 2012-08-01 15:28:29
该解决方案效果很好。请将它添加为答案! – mdm 2016-05-16 08:36:07