1. 程式人生 > 實用技巧 >JAVA高階複習-自定義泛型方法

JAVA高階複習-自定義泛型方法

泛型方法:在方法中出現了泛型的結構,泛型引數與類的泛型引數沒有任何關係,也就是說,泛型方法所屬的類是不是泛型類都沒有關係

//泛型方法:在方法中出現了泛型的結構,泛型引數與類的泛型引數沒有任何關係
    //也就是說,泛型方法所屬的類是不是泛型類都沒有關係
    //下述方法才為泛型方法,注意格式
    public <E> List<E> copyFromArrayToList(E[] arr) {
        List<E> list = new ArrayList<>();
        for (E e : arr) {
            list.add(e);
        }
        return list;
    }

總結:泛型方法可以宣告為靜態的,原因:泛型引數是在呼叫方法的時候確定的,並非在例項化類時確定。

/**
     * 下面的為靜態泛型方法,為什麼可以呢,因為泛型方法是被物件呼叫的,
     * 而之前的帶類的泛型引數的靜態方法,是類初始化的時候就被呼叫了
     * 總結:泛型方法可以宣告為靜態的,原因:泛型引數是在呼叫方法的時候確定的,並非在例項化類時確定。
     **/
    public static <E> List<E> copyFromArrayToList2(E[] arr) {
        List<E> list = new ArrayList<>();
        for (E e : arr) {
            list.add(e);
        }
        return list;
    }

測試泛型方法

/**
     * 測試泛型方法
     */
    @Test
    public void test01() {
        Order<String> order = new Order<>();
        Integer[] arr = new Integer[]{1, 2, 3};
        List<Integer> integers = order.copyFromArrayToList(arr);
        System.out.println(integers);
    }