泛型类
跟Java一样,Kotlin也支持泛型类:
classBox(t: T) {
var value = t
} |
在具体使用的时候,需要传入具体的类型:
另:通过值可以推断出类型,也可以省略类型参数:
// 1 has type Int, so the compiler figures out that we are talking about Box
val box = Box(1) |
变异(Variance)
Java通配符(wildcard types)
该部分都是讲的Java泛型中的通配符。
在java泛型使用中,提供类型通配符“?”,这块只是简单介绍java通配符的设计目的及基础,详细可以自行去了解下“Java 泛型通配符?”,如:
//Java
voidparseList(ListdataList) {
//… …
} |
《EffectiveJava》中解析,使用通配符为了提高API的使用灵活性(Use bounded wildcards to increase APIflexibility)。
因为在java中,泛型类型是不可变的,比如:“List
”不是“List