我试图使用scala为gridcache编写一个gridgain实现读写和直写。但是我很难将使用泛型的一些方法模式从java(这是它的写入)转换为scala。
有问题的java doc: 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中做到这一点。因此,如果任何人都可以向我展示在scala中执行此操作的最佳方法,那将是非常棒的。不幸的是,令人敬畏的网格javadocs还没有像scala例子那么多。我也可以安全地忽略GridCacheTx tx,因为我不会在我的应用程序中使用事务。
答案 0 :(得分:2)
为这种情况创建了存在类型。现在免费在线第一版 Scala编程中的Combining Scala and Java。
所以你可能需要定义:
def loadAll(cacheName: String, tx: GridCacheTx,
keys:Collection[T] forSome {T <: K},
c: GridInClosure2[K,V])
我认为Collection[_ <: K]
也可能有用。
我还在某处读过抽象类型也可用于处理类似的情况,但我现在找不到链接,所以我不确定它是否涵盖了这种情况。 编辑:实际上它也在书中(下一段中的SetAndType示例)。