定义类
//T 表示不确定性的,定义泛型和使用泛型
open class Box<T> (var thing :T)
//抽象Thing对象
abstract class Thing
//抽象Fruit 对象
abstract class Fruit :Thing()
//抽象Apple 对象
class Apple : Fruit()
//抽象Orange 对象
class Orange : Fruit()
out关键字的使用
加上这个
out关键字
表示接收当前类型或它的子类,相当于Java的 ArrayList< ? extends Fruit>
fun setFruitListByOut(list :ArrayList<out Fruit>){
println(list.size)
}
in 关键字的使用
加上这个
in关键字
表示接收当前类型或它的子类,相当于Java的 ArrayList< ? super Fruit>
fun setFruitListByIn(list :ArrayList<in Fruit>){
println(list.size)
}
接收任何类型,相当于Java的 ArrayList<?>
fun setFruitListByAny(list :ArrayList<*>){
println(list.size)
}
泛型的使用
//泛型的使用
fun <T> parseType (thing : T){
when(thing){
is Int->println("当前类型是Int型")
is String->println("当前类型是String型")
else ->println("unkonwn")
}
}
网友评论