2011-05-05 38 views
0

我正在嘗試使用scala爲gridcache編寫一個gridgain實現來讀取和寫入。然而即時通訊使用泛型形式java(這是它寫的)轉換爲scala的一些方法模式。用gridgain在scala寫一個GridCacheStore實現

Java文檔的問題: http://www.gridgain.com/javadoc30C/org/gridgain/grid/cache/GridCacheStore.html

專門

loadAll(String cacheName, GridCacheTx tx, Collection<? extends K> keys, GridInClosure2<K,V> c) 

我遇到麻煩

Collection<? extends K> keys 

,因爲我不知道該怎麼做,在斯卡拉。所以如果任何人都可以告訴我在scala中做到這一點的最好方法,那將是一個令人難以置信的問題。不幸的是,令人敬畏的gridgain javadocs沒有太多的scala例子。我也可以安全地忽略GridCacheTx tx,因爲我不會在我的應用程序中使用事務。

回答

2

爲這種情況創建了存在類型。請參閱Combining Scala and Java免費在線第一版Scala編程

所以,你可能需要定義:

def loadAll(cacheName: String, tx: GridCacheTx, 
    keys:Collection[T] forSome {T <: K}, 
    c: GridInClosure2[K,V]) 

我想Collection[_ <: K]也可以正常工作。

我也讀過抽象類型也可以用來處理類似的情況,但我現在找不到鏈接,所以我不確定它是否覆蓋了這種情況。 編輯:實際上它也在書中(下一段中的SetAndType示例)

+0

這工作到編譯它的點。然後它說它不符合接口定義。 – Luigimax 2011-05-07 13:01:32

+0

你的意思是它編譯,你會得到一個運行時錯誤?沒有更多的信息,恐怕我沒有任何其他的見解。 – huynhjl 2011-05-07 23:25:20