泛型接口/类(泛型类型)
定义泛型累些那个,实在类型名之后、主构造函数之前用尖括号括起的大写西姆类型参数指定:
1 | interface Drink<T> { |
1 | abstract class Color<T>(var t: T /*泛型字段*/){ |
泛型字段
泛型方法
类型参数要放在方法名的前面:
1 | fun <T> fromJson(json: String, tClass: Class<T>): T? { |
泛型约束
限定泛型参数的类型
1 | //所传递的参数类型 T 必须满足是 User 的子类或 User 类 |
泛型中的 out 与 in
泛型
型变
java泛型中的一些概念
java 中的通配符类型参数: ? extends E
通配符<? extends E>表示包括E在内的所有子类,称为协变
通配符<? super E>表示包括E在内的所有父类,称为逆变
协变: 表示包括E在内的所有子类,泛型对象只能读取,称为生产者
逆变: 表示包括E在内的所有父类,泛型对象只能写入,称为消费者
资料: