Java泛型(Generic)

来源:互联网 发布:ar口袋动物园软件 编辑:程序博客网 时间:2024/06/05 14:06
泛型本质是把类型参数化,即数据类型是一个参数,可用在类/接口/方法中,分别称为泛型类/泛型接口/泛型方法,用于数据类型不确定的情况下!

一.定义泛型

1.泛型类(作用范围是整个类)

class Gen<T> {    private T object;    public Gen(T object) {        this.object = object;    }    public T getObject() {        return object;    }}public class GenDemo {    public static void main(String[] args) {        // 定义Int版本        Gen<Integer> intObj = new Gen<Integer>(88);        int i = intObj.getObject();        // 定义String版本        Gen<String> strObj= new Gen<String>("Hello");        String s = strObj.getObject();    }}注意: 因为static方法无法访问[泛型类的参数T],所以static方法使用泛型功能,必须用[泛型方法].

2.泛型方法(作用范围是整个方法)

public class A {    // 必须先定义<T>,其中字母可以是任意字母,通常大写字母          public static <T> void test(T t) {        System.out.println(t.getClass().getName());    }    public static void main(String[] args) {                // 当方法被调用时,虚拟机自动判断T的具体类型        A.test("x");        A.test(1);        A.test(new A());    }}

二.泛型边界

泛型引用不确定,可使用泛型通配符?   Class<?> clazz = Class.forName("xxx");List<?> list = null;list = new ArrayList<String>(); list = new ArrayList<Integer>();注意:    1.通配符?只能用于泛型引用,不能用于泛型对象!    2.如果只指定了<?>,则默认是任意类    3.通配符泛型限制,<? extends Collection> <? super Double>泛型边界T extends A 指定泛型上边界类(泛型T必须是A类或其子类)      T super B 指定泛型下边界类(泛型T必须是B类或其超类)

GitHub博客:http://lioil.win/2017/02/06/Java-Generic.html
Coding博客:http://c.lioil.win/2017/02/06/Java-Generic.html

0 0
原创粉丝点击