泛型即参数化类型。将类型参数化,可以用在类、接口、方法上。
泛型类
class Box<T>(t:T){
var value = t
}
创建类的实例时,要指定类型的参数。或者赋值让编译器来推断。
//创建类的实例,需要指定参数类型
val box:Box<Int> = Box<Int>(1)
val box2 = Box(2)
var boxInt:Box<Int> = Box<Int>(10)
var boxString:Box<String> = Box<String>("smith")
通过内部属性变量输出值
println(box.value)
println(box2.value)
println(boxInt.value)
println(boxString.value)
看结果
1
2
10
smith
泛型函数
/**泛型函数*/
fun <T> doPrintln(content: T){
when(content){
is Int -> println("整型数字为 $content")
is String -> println("字符串转换大写:${content.toUpperCase()}")
else -> println("$content 不是整型也不是字符串")
}
}
fun main(args: Array<String>) {
val age = 27
val name = "Joel Smith"
val bool = true
doPrintln(age)
doPrintln(name)
doPrintln(bool)
}
运行结果
整型数字为 27
字符串转换大写:JOEL SMITH
true 不是整型也不是字符串