泛型是Java中允许程序员在强校验下定义某些可变部分,以达到代码复用的目的。

为什么要使用泛型?

假设我们有一个烤箱,烤箱可以用来烤面包、烤鱼甚至烤红薯。

假设面包、鱼这些食物在Java中都是一个个类,这个些类都继承于Food这个父类。

我们在烤箱类的烘烤方法中使用泛型,传入对应的类的实例就可以实现烘烤它的功能。

泛型有什么优点?

1.类型安全

2.提升可读性

3.代码重用

怎样使用泛型?

ClearCar类具有一个ClearService静态内部类,和clear方法。

BMW类和Benze类都继承自Car类

ClearService中clear方法中使用了泛型,在传入任何一个品牌车对象后就进行洗车操作。

public class ClearCar {
    //静态内部类
    static class ClearService{
        public static void main(String[] args) {
            Car a=new BMW();
            Car b=new Benze();
            ClearCar wash=new ClearCar();
            wash.clear(a);
            wash.clear(b);
        }

    }

    public  <Car> void clear(Car c){
        System.out.println(c.getClass()+" is clear");

    }


}


需要注意的问题

1.尖括号里的没有改元素都指代一种未知类型

2.尖括号的位置非常讲究,必须在类名之后或方法返回值之前

3.泛型在定义处只具备执行Object方法的能力

4.当然Java语言中的泛型可以说是一种伪泛型,他仅仅是一种编写代码的语法检查,在编译时就可以看到他的原型

参考资料

[1] 《Java编程思想》

[2] 《码出高效——Java开发手册》

[3] 极客时间 《Java核心技术36讲》