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) // 可以
}