2014-01-28 58 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