8.泛型

1.泛型在集合中的使用(掌握)

8.泛型_第1张图片
集合使用泛型前
8.泛型_第2张图片
集合使用了泛型

//集合类或接口,在声明的时候,使用了泛型。那么我们就可以在实例化的时候,声明具体的泛型的类型。

//在声明泛型类或泛型接口时,其中的方法如果使用了泛型的声明的类型:E.那么当实例化以后,相应方法中的E类型都替换为具体的泛型的类型。

//虽然集合类或接口使用了泛型的声明,但是我们在实例化时,可以不用泛型。这个时候,默认泛型的类型是Object.

8.泛型_第3张图片
泛型示例

2.如何自定义泛型类、泛型接口、泛型方法(理解)

8.泛型_第4张图片
自定义泛型

//在实例化泛型类的对象时,指明泛型类中泛型的类型,那么其相关的方法,若使用了泛型的类型,那么这些泛型的类型全部转换为实际指明的类型。

//当子类继承有泛型的父类时,也可以指明泛型的类型


3.泛型在继承方面的体现(理解)

8.泛型_第5张图片
泛型在继承方面理解

4.通配符的使用(理解)

    //类A 是 类 B 的父类,但是List不是 List的父类,二者是并列关系

    //List?是 List和List的公共父类。其中类A和类B是任意的类。

    //有限制条件的通配符:(了解)

    //? extends A:可以将List或List 赋值给List,其中B类是A类的子类

    //? super A:可以将List 或List 赋值给List,其中B类是A类的父类

    Listlist1 = new ArrayList();

    list1.add("AA");

    list1.add("BB");

    list1.add("CC");

    List list2 = list1;

    //1.读取:可以读取声明为通配符的集合中的元素

        /*for(Object o : list2){

            System.out.println(o);

        }*/

        Iterator iterator = list2.iterator();

        while(iterator.hasNext()){

            System.out.println(iterator.next());

        }

    //2.写入:不允许向声明为通配符的集合中写入数据。唯一可以写入的就是null

    //list2.add("DD");

    list2.add(null);

你可能感兴趣的:(8.泛型)