【发布时间】:2011-06-06 11:00:08
【问题描述】:
我有一个 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
【问题讨论】:
标签: scala scala-2.8 scala-collections scala-java-interop