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) // Compilation error
}
建议通过快速修复添加匹配的差异修饰符:
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
}