我正在尝试重写一个调用超类并将返回值添加到新集合的方法(这是必需的,因为超类的返回值是不可变的)。
惯用的 Java 如下:
public class JaxrsApplication extends Application {
@Override public Set<Class<?>> getClasses() {
HashSet<Class<?>> classes = new HashSet<>(super.getClasses());
classes.add(PlainTextWriter.class);
classes.add(PageResource.class);
return classes;
}
}
我试图在 Kotlin 中实现一个等价物但没有成功:
public class JaxrsApplication() : Application() {
override fun getClasses(): MutableSet<Class<out Any?>>? {
val classes = hashSetOf<Class<out Any?>>()
classes.addAll(super.getClasses()) // <= compiler error!
classes.add(javaClass<PlainTextWriter>())
classes.add(javaClass<PageResource>())
return classes
}
}
这似乎是 addAll 函数的类型推断问题,但我不知道如何解决它。帮助表示赞赏:-)
对于未来的读者,我在这里感到困惑的原因是错误弹出窗口中的类型不匹配:
MutableSet
工具Iterable
,这里的关键是最后的'?' 'Found' 行上的字符表示返回的值可以为空。