2014-01-28 59 views
0

我想打电话给(API的一部分)这个Java方法,从斯卡拉(2.10.3):调用Java方法(对付仿制药)从斯卡拉失败

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); 
} 

首先,我创建了转换器(斯卡拉左右):

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 

如何应对这种情况?

+0

你尝试过[MyVO](classOf ...)吗? –

+0

@Rex Kerr我刚刚尝试过它,但现在它抱怨方法'to'本身:'无法解析符号'。在这里我刚才测试:'myResult.to [MyVO(classOf [MyVO],新MyVOConverter())' – Mik378

+0

哦,我想''从封闭类?也许你可以坚持封闭的类,它的类型参数是'MyVO'? –

回答

1

该接口上的Mapjava.util.Map,但是,假设您没有导入那个,那么您使用的是scala.collection.immutable.Map,因此它们不兼容。

+0

的确:)非常感谢Daniel,这很有效 – Mik378