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