我試圖重寫調用超類的方法,並將返回的值添加到新集合(因爲超類的返回值是不可變的,所以這是必需的)。如何將一個集合的內容添加到新集合
慣用的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;
}
}
我試圖實現科特林沒有成功等價物:
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'行中的字符表示返回的值是可空的。