5_泛型

2020-11-30  本文已影响0人  真是个点子王

泛型概述

泛型的好处

自定义泛型类

     修饰符  class  类名<泛型变量>{

      }
public class GenericDemo{
    public static void main(String[] args){
        MyArrayList<String> lists = new MyArrayList<>();
        lists.add(1);  //这里会报错
        lists.delete("hello");
    }
}

class MyArrayList<E>{
    public void add(E e){
        
    }
    public void delete(E e){
        
    }
}

自定义泛型方法

    修饰符  <泛型变量>  返回值类型  方法名称(形参列表){
    }

泛型接口

    修饰符  interface  接口名称<泛型变量>{
    }
// 泛型接口
public interface Date<E>{
    void add(E stu);
    void delete(E stu);
    void update(E stu);
    E query(int id);
}
// Stuent类
public class Student{
}
// 接口实现
public class StudentData implements Data<Student>{
    @Override
    public void add(Student stu){System.out.println("添加学生");}
    @Override
    public void delete(Student stu) {
        System.out.println("删除学生!");
    }
    @Override
    public void update(Student stu) {
    }
    @Override
    public Student query(int id) {
        return null;
    }
}
// 主方法
public class GenericDemo {
    public static void main(String[] args) {
        StudentData data = new StudentData();
        data.add(new Student());
        data.delete(new Student());
    }
}

泛型的通配符

public class GenericDemo {
    public static void main(String[] args) {

        // 这两个类送进去都会报错
        ArrayList<BMW> bmws = new ArrayList<>();
        bmws.add(new BMW());
        bmws.add(new BMW());
        bmws.add(new BMW());
        run(bmws);
        ArrayList<BENZ> benzs = new ArrayList<>();
        benzs.add(new BENZ());
        benzs.add(new BENZ());
        benzs.add(new BENZ());
        run(benzs);
    }

    // 定义一个方法,可以让很多汽车一起进入参加比赛
    public static void run(ArrayList<Car> cars){

    }
}
class Car{
}
class BMW extends Car{
}
class BENZ extends Car{
}

通配符: ?

public class GenericDemo{
    public static void main(String[] args){
        ArrayList<BMW> bmws = new ArrayList<>();
        bmws.add(new BMW());
        bmws.add(new BMW());
        bmws.add(new BMW());
        run(bmws);

        ArrayList<BENZ> benzs = new ArrayList<>();
        benzs.add(new BENZ());
        benzs.add(new BENZ());
        benzs.add(new BENZ());
        run(benzs);

        ArrayList<Dog> dogs = new ArrayList<>();
        dogs.add(new Dog());
        dogs.add(new Dog());
        dogs.add(new Dog());
        // run(dogs); // 就进不来了!
    }
    // 定义一个方法,可以让很多汽车一起进入参加比赛
    public static void run(ArrayList<? extends Car> cars){

    }
}
class Car{
}
class BMW extends Car{
}
class BENZ extends Car{
}
class Dog{
}
上一篇 下一篇

猜你喜欢

热点阅读