三泛型的使用

1.泛型類和泛型方法

(1)格式

    類名<泛型>
    方法名(泛型)

(2)示例
例如
a.泛型類

public class MyClass<T>{
    public void print(T t){
        System.out.println(t);
    }
}

b.實現方法

public class Test01{
    public static void main(String[] args){
        MyClass<String> mc1 = new MyClass<>();
        mc1.print("hello1");
        
        MyClass<Integer> mc2 = new MyClass();
        mc2.print(99);
    }
}       

2.泛型接口和泛型方法

(1)格式

    接口<泛型>
    方法名(泛型)

(2)示例
例如
a.接口

public interface MyInter<O>{
    public abstract void print(O o);
}

b.接口實現

public class MyInterImpl<O> implements MyInter<O>{
    @Overide
    public void print(O o){
        System.out.println(o);
    }
}

c.調用

public class Test02{
    public static void main(String[] args){
        MyInterImpl<String> m1 = new MyInterImpl<>();
        m1.print("world");
        
        MyInterImpl<Double> m2 = new MyInterImpl();
        m2.print(8.8)
        
    }
}

3.泛型通配符

(1)概念

泛型的通配符
    ?:代表任意的數據類型
使用方式:
    不能創建對象使用
    只能作爲方法的參數使用
泛型的上限限定
    ? extends E 代表使用的泛型只能是E類型的子類/本身
泛型類的下限限定
    ? super E 代表使用的泛型只能是E類型的父類/本身 

(2)示例

public class Test02 {
    public static void main(String[] args) {
        demo1();
    }
    private static void demo1() {
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("hello");
        list1.add("world");
        list1.add("beatiful");
        print(list1);

        ArrayList<Integer> list2 =  new ArrayList<>();
        list2.add(100);
        list2.add(200);
        list2.add(300);
        list2.add(500);
        print(list2);
    }
    /**
     * 泛型通配符的使用
     * @param list
     */
    private static void print(ArrayList<?> list){
        for (Object o : list) {
            System.out.println(o);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章