Android

关注公众号 jb51net

关闭
首页 > 软件编程 > Android > kotlin in和out区别

kotlin中泛型中in和out的区别解析

作者:seevc

在Kotlin泛型中,in关键字主要用于定义逆变(Contravariance),它表示一个泛型类型参数可以是指定类型或者它的超类型,这篇文章主要介绍了kotlin中泛型中in和out的区别解析,需要的朋友可以参考下

1.概念含义

2.使用场景和位置限制

interface AnimalHandler<in T> {
    fun handle(animal: T): Unit
}
val animalHandler: AnimalHandler<Animal> = object : AnimalHandler<Dog> {
    override fun handle(dog: Dog): Unit {
        println("Handling a dog")
    }
}
interface Producer<out T> {
    fun produce(): T
}
val producer: Producer<Any> = object : Producer<String> {
    override fun produce(): String {
        return "Hello"
    }
}

不能用于函数参数类型:如果试图将out修饰的泛型参数用于函数参数,编译器会报错。因为out规定这个类型参数主要用于返回子类型的值,而不是接收子类型的值作为参数。

3.目的和效果

到此这篇关于kotlin中泛型中in和out的区别的文章就介绍到这了,更多相关kotlin in和out区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文