目录
1.初识泛型
1.1什么是泛型
“泛”:广泛 “型”:类型
“泛型”:广泛的数据类型
官方的话说:“就是把参数类型的具体化变的参数化”
通常我们见到的<T>就是泛型
1.2为什么会出现泛型
我们先引入一个实例
(1)这里有一个Person类
class Person {
private String name;
private int age;
}
这时你发现要求上还有一个“score”属性,你选择了int类型
private int score;
这时,你发现:同事A喜欢用A,B,C来给分数赋值,同事B喜欢用true和false来给分数复制,你喜欢用数字来赋值。
但是只能由一种score怎么办呢?
有没有一种方法,可以想传什么就传什么呢?
此时我们引入泛型
class Person <T>{
private String name;
private int age;
private T score;
}
<T>代表你使用了泛型,那么怎么去使用呢?
Person <String> p1 = new Person<String>();
<String>这里的String传给了Person里面的T
也就是说
class Person <T>{
private String name;
private int age;
private T score;//此时的T就会变成String
}
这就是泛型的一个简单使用
2.泛型的使用
2.1泛型类
2.1.1泛型类的使用
(1)定义一个泛型类(尖括号跟在类名后面,里面的字母任意)
class Person <T>{
private String name;
private int age;
private T score;
}
(2)实例化一个泛型类(类名 <数据的类型> 变量名)
Person <String> p1 = new Person<String>();
2.1.2泛型类的继承
(1)不继承泛型
1.1不继承父类的泛型,并且自身也不使用泛型
class Student extends Person{
private String name;
private int age;
}
1.2不继承父类的泛型,但是自身使用泛型
class Student <T> extends Person{
private String name;
private int age;
}
(2)继承泛型
2.1继承于父类的泛型
class Student <T> extends Person<T>{
private String name;
private int age;
}
2.2子类按需实现父类的泛型
class Student <T> extends Person<String>{
private String name;
private int age;
}
2.2泛型方法
2.2.1泛型方法的定义(返回值前<T>)
public static <T> void MY(T x){
System.out.println(x.toString());
}
2.2.2泛型方法的使用