kotlin范型中的out和in关键字有什么作用?

kotlin范型中的out和in关键字有什么作用?

class Demo<in T>
class Demo<out T>
kotlinoutin范型
1
321
小课
小课2022-06-04 20:57
1 个回答

inout都是为了让范型更好用,kotlin中的<out T>相当于java中的<? extends T>,而<in T>就相当于<? super T>,但是inout关键字的功能要更强大一些。

使用out关键字修饰的范型,能够实现子类型的范型类直接赋值给父类型的范型类,比如List<out T>

val doubleList: List<Double> = listOf(1.0, 2.0)
val numberList: List<Number> = doubleList

而使用in关键字修饰的范型,能够实现父类型的范型类直接赋值给子类型的范型类,比如Comparable<in T>

val numberComparable: Comparable<Number> = ...
val doubleComparable: Comparable<Double> = numberComparable

更多内容可以参考Kotlin范型中的in和out关键字(协变和逆变)或者官方文档

1
已修改
小课
小课2022-06-04 22:18
你的回答

内容