我想从 Scala (2.10.3) 调用这个 Java 方法(API 的一部分):
public <R> ConvertedResult<R> to(Class<R> type,
ResultConverter<Map<String, Object>, R> converter)
ResultConverter
接口(interface)为:
public interface ResultConverter<T, R> {
R convert(T value, Class<R> type);
}
首先,我创建了我的转换器(在 Scala 中):
class MyVOConverter extends ResultConverter[Map[String, AnyRef], MyVO] {
def convert(queryResult: Map[String, AnyRef],
`type`: Class[MyVO]): MyVO = {
//...
}
}
在调用时提供类型和我的 MyVOConverter
:
myResult.to(classOf[MyVO], new MyVOConverter())
但是,Scala 编译器对此发出警告:
Type mismatch, expected: ResultConverter[Map[String, AnyRef], NotInferedR],
actual: MyVOConverter
此案如何处理?
最佳答案
界面上的 Map
是 java.util.Map
,但是,假设您尚未导入它,您正在使用 scala.collection.immutable .Map
,因此不兼容。
关于java - 从 Scala 调用 Java 方法(处理泛型)失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21395684/