从Scala调用Java方法(处理泛型)失败了

时间:2014-01-28 02:24:19

标签: java scala generics

我想从Scala(2.10.3)中调用这个Java方法(API的一部分):

public <R> ConvertedResult<R> to(Class<R> type,
    ResultConverter<Map<String, Object>, R> converter)

ResultConverter界面是:

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

如何处理这种情况?

1 个答案:

答案 0 :(得分:1)

界面上的Mapjava.util.Map,但是,假设您尚未导入scala.collection.immutable.Map,那么您使用的是{{1}},因此不兼容。