泛型能够帮助我们把【类型明确】的工作推迟到创建对象或调用方法的时候。
1. 泛型类
泛型类是把泛型定义在类上,当用户在使用时才需要把类型给确定下来,具体方法使用<>
加一个未知数(通常是单个参数用T
,或者两个参数用K
和V
)。
2. 泛型方法
| ```java
public class GenericMethod {
public
public static void main(String[] args) {
GenericMethod genericMethod = new GenericMethod();
String hello = genericMethod.show("Hello World!");
Integer code = genericMethod.show(123);
}
}
| ```java
public class GenericMethod {
public <K, V> V display(K k, V v) {
return v;
}
public static void main(String[] args) {
GenericMethod genericMethod = new GenericMethod();
Integer value = genericMethod.display("Hello", 123);
}
}
| | —- | —- |
3. 泛型的继承
泛型类在继承时,可以明确父类(泛型类)的参数类型,也可以不明确。
不借用泛型的情况下,我们在实现一个StudentComparator
比较器时,需要通过判断传进来的参数类型是否是Student
类:
| ```java public interface Comparator { Integer compare(Object o1, Object o2); }
| ```java
public class StudentComparator implements Comparator{
@Override
public Integer compare(Object o1, Object o2) {
if (o1 instanceof Student && o2 instanceof Student) {
return ((Student) o1).getAge() - ((Student) o2).getAge();
}
return null;
}
}
| | —- | —- |
使用泛型可以省略类型判断的步骤:
| ```java
public interface Comparator
| ```java
public class StudentComparator
implements Comparator<Student> {
@Override
public Integer compare(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
}
| | —- | —- |
当然我们还可以实现