私は次のようなJavaのインターフェースを持っています:
public interface X<T> {
Set<Class<? extends T>> getTypes();
}
このインターフェイスを Scala 2.8 で実装する必要があり、現在、次のようなことを行っています。
class XImpl extends X<CacheValue> {
override def getTypes = {
val set = asJavaSet(Set(classOf[CacheValue]))
set
}
}
しかし、これはコンパイルされず、コンパイラは次のように言います:
error: type mismatch;
found : java.util.Set[java.lang.Class[CacheValue]]
required: java.util.Set[java.lang.Class[_ <: CacheValue]]
set
この問題を回避する方法はありますか?
アップデート:
私は次のことを試しましたが、まだ運がありません:
override def getTypeClasses = {
val set = asJavaSet(Set(classOf[CacheValue].asSubclass(classOf[CacheValue])))
set
}
この後者の場合、次のようになります。
error: type mismatch;
found : java.util.Set[java.lang.Class[?0]] where type ?0 <: org.infinispan.server.core.CacheValue
required: java.util.Set[java.lang.Class[_ <: org.infinispan.server.core.CacheValue]]
set