Scala から呼び出す必要がある非常に古い Java メソッドがあります。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})