Kotlin编程相关知识点介绍:
- Kotlin编程之使用Intellij IED和了解源文件(.kt)
- Kotlin编程之类的介绍和使用
- Kotlin编程之类的属性
- Kotlin编程之方法
- Kotlin编程之父类和继承父类
- Kotlin编程之接口和实现接口
- Kotlin编程之伴生对象,抽象类,密封类
- Kotlin编程之嵌套类,内部类,匿名内部类
- Kotlin编程之对象的表达式和声明
- Kotlin编程之扩展方法
- Kotlin编程之扩展属性和扩展伴生对象
泛型
在Kotlin编程中,支持泛型
package com.xingen.kotlin.day2017528
fun main(args: Array<String>) {
var instance=Test<String>("定义一个泛型类")
instance.test()
//当可以推断出泛型中的类型,例如:从构造函数的参数等,可以省略指定参数类型。
Test(1).test()
}
/**
* 定义一个泛型类,和泛型属性
*/
class Test<T>(var t:T) {
fun test(){
println(t)
}
}
输出结果:
定义一个泛型类
1
可知:
- 当可以推断出泛型中的类型,例如:从构造函数的参数等,可以省略指定参数类型
泛型的注意点:
在java编程中类型系统最棘手的一部分是通配符类型。但是,在Kotlin编程中,是没有通配符,采用声明变化和类型投影来替代。
通配符的作用: 使用界限通配符增加API的灵活性。
在Java编程中一个常见的问题:
List<String> strs = new ArrayList<String>();
List<Object> objs = strs; // !!! 这里会导致一个问题,在Java中是禁止这样做的
objs.add(1); //将integer类型的数据添加到String 类型的列表中
String s = strs.get(0); // !!! ClassCastException异常 : Integer类型不能转成String
在Kotlin编程中:
一旦声明类型后,不能加入其它的类型数据,如下图所示。