9
とラムダとSAM-コンストラクタの交換しますIntelliJは、SAMコンストラクターをラムダで置き換えることができるという警告を出します。 これは2番目のステートメントになります。は、私は次のJavaインタフェースを持っている共変タイプ
it
はタイプAny?
であり、A
ではないため、この2番目のステートメントはコンパイルされません。 out
修飾子を削除すると、再度コンパイルされます。
どうしてですか?
class B : A {
override fun go() {
TODO()
}
}
class MainImp : Main() {
override fun a(): Test<out A> {
val value: Test<B> = object : Test<B> {
override fun test(action: Action1<in B>?) {
TODO()
}
};
return value
}
}