泛型能够帮助我们把【类型明确】的工作推迟到创建对象或调用方法的时候。
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);}
}
| ```javapublic 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); }
| ```javapublic class StudentComparator implements Comparator{@Overridepublic 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
| ```javapublic class StudentComparatorimplements Comparator<Student> {@Overridepublic Integer compare(Student o1, Student o2) {return o1.getAge() - o2.getAge();}}
| | —- | —- |
当然我们还可以实现
