/**
* 可以用inline关键字修饰函数,同时用reified关键字修饰泛型类型,这样就可以保留泛型参数的具体类型
*/
class Box<T>(t: T) {
var value = t
}
/**
* Kotlin 泛型函数的声明与 Java 相同,类型参数要放在函数名的前面
*/
fun <T> doPrintln(content: T) {
when (content) {
is Int -> println("整型数字为${content}")
is String -> println("字符串转换为大写:${content.toUpperCase()}")
else -> println("T 不是整型,也不是字符串")
}
}
/**
* 型变
* Kotlin 中没有通配符类型,它有两个其他的东西:声明处型变(declaration-site variance)与类型投影(type projections)
* 声明处型变:
* 声明处的类型变异使用协变注解修饰符:in、out,消费者 in, 生产者 out
* 使用 out 使得一个类型参数协变,协变类型参数只能用作输出,可以作为返回值类型但是无法作为入参的类型
* in 使得一个类型参数逆变,逆变类型参数只能用作输入,可以作为入参的类型但是无法作为返回值的类型
*/
//支持协变
class Runoob<out A>(val a: A) {
fun foo(): A {
return a
}
}
//支持逆变
class RunB<in A>(a:A){
fun foo1(a:A){
Kotlin泛型(七)
最新推荐文章于 2024-08-09 16:38:12 发布
本文详细探讨了Kotlin编程语言中的泛型概念,包括其基本用法、类型约束、通配符以及如何在Android开发中有效利用泛型提高代码复用性和安全性。通过实例解析,帮助读者深入掌握Kotlin泛型的运用。
摘要由CSDN通过智能技术生成