1
我在Java中,看起來像這樣的接口:返回類型和子類的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
任何想法浩解決這個問題?
UPDATE:
我試過以下,但仍沒有運氣:
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
嗯,編譯器不喜歡: 錯誤:類型不匹配;發現:java.util.Set [java.lang.Class [_ $ 1(in method getTypeClasses)]]其中類型_ $ 1(在方法getTypeClasses中)<:org.infinispan.server.core.CacheValue required:java.util .Set [java.lang.Class [_ <:org.infinispan.server.core.CacheValue]] set – 2011-01-10 13:42:58