File size: 1,752 Bytes
0284885
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package Generics_package5;

import java.util.ArrayList;

public class Generics_demo6 {
    public static void main(String[] args) {
        /*
        *   需求:
        *       定义一个方法,形参是一个集合,但是集合中的数据类型不确定
        *
         */

        //创建集合的对象
        ArrayList<Ye> list1 = new ArrayList<>();
        ArrayList<Fu> list2 = new ArrayList<>();
        ArrayList<Zi> list3 = new ArrayList<>();
        ArrayList<Student> list4 = new ArrayList<>();

        method(list1);
        method(list2);
        method(list3);

        //method(list4);

    }

    /*
    *   此时:泛型里面写的是什么类型,那么只能传递什么类型的数据。
    *   弊端:
    *       利用泛型方法有一个小弊端,此时他可以接受任意的数据类型
    *       Ye   Fu   Zi   Student
    *
    *   希望:本方法虽然不确定类型,但是以后我希望只能传递Ye Fu Zi
    *
    *   此时我们就可以使用泛型的通配符:
    *       ? 也表示不确定的类型
    *       他可以进行类型的限定
    *       ? extends E:表示可以传递E或者E所有的子类类型
    *       ? super E:表示可以传递E或者E所有的父类类型
    *
    * 应用场景:
    *       1、如果我们在定义类、方法、接口的时候,如果类型不确定,就可以定义泛型类、泛型方法、泛型接口
    *       2、如果类型不确定,但是能知道以后只能传递某个继承体系中的,就可以泛型的通配符
    * 泛型的通配符:
    *       关键点:可以限定类型的范围。
     */
    public static<E> void method(ArrayList<? extends Ye> list){

    }
}

class Student{

}