1. 泛化的类型,类型参数化: 数据类型可以使用参数来代替
int i = 5; 变量: 变化的数据 ,变量名是i,存储的数据是5
var j; 变化的类型,类型是不确定的;只有到赋值的时候才确定具体类型
var k = 15; --> var是int类型
var m = "xx"j; --> var是String类型
变量前面的数据类型是可以变化的;可以加标记,一般用T, T1,T2...
2. 泛型使用类型
1.泛型类
public class Student<T>{}
2.泛型方法
public static <T1, T2> String test2(T1 t1, T2 t2) {
return t1.toString() + t2.toString();
}
3.有界泛型 vs 无界泛型
1.无界泛型: 泛型标记定义的类型,可以是任意的,没有任何限制;
2.有界泛型: 泛型标记定义的类型,有界限的,有范围
4.泛型通配符
? 通配符,容器类框架中使用
5.注意事项
1.泛型标记的具体类型必须是引用类型,如果是基本类型,请使用包装类型'
2.泛型定义抽象化处理,泛型使用必须是具体化
3.泛型具体调用过程中给定的类型互不干扰,没有关系
4.泛型类有多个标记,以逗号分隔
public class Company<T1, T2>{}
5.泛型方法 : 泛型的定义 ,放在权限修饰符 和 返回值类型 之间
6.泛型的作用
提高代码利用率;给代码标记,提高的代码的可扩展性;避免进行向下转型
提高代码类型安全