in または out の変性を持つことができるパラメーターを報告します。
in と out の変性を使用すると、Kotlin の型推論がより的確に行われるほか、コードのセマンティクスも明確になります。
例:
class Box<T>(val obj: T)
fun consumeString(box: Box<String>) {}
fun consumeCharSequence(box: Box<CharSequence>) {}
fun usage(box: Box<String>) {
consumeString(box)
consumeCharSequence(box) // コンパイルエラー
}
クイックフィックスを使用すると、マッチする変性修飾子が追加されます。
class Box<out T>(val obj: T)
fun consumeString(box: Box<String>) {}
fun consumeCharSequence(box: Box<CharSequence>) {}
fun usage(box: Box<String>) ++{
consumeString(box)
consumeCharSequence(box) // OK
}