Java泛型的定義與使用


一、使用泛型的優缺點

1.不使用泛型

優點:

創建集合時不聲明泛型,則默認為Object類型,可存儲任意的數據類型

缺點:

不安全,會引發異常

2.使用泛型

優點:

1.避免了類型轉換的麻煩,存儲的類型一致方便操作
2.把運行期的異常提升到編譯期,減少后期不必要的麻煩

缺點:

只能存儲特定的一種數據類型

二、定義含有泛型的接口

/* 定義含有泛型的接口 */
public interface GenericInterface<I> {
    void method(I i);
}

public class Demo01 {
    public static void main(String[] args) {
    	/* 在接口定義泛型,作為方法的參數使用 - 使用了匿名內部類和匿名對象 */
        new GenericInterface<String>(){
            @Override
            public void method(String s) {
                System.out.println(s);
            }
        }.method("小斑馬");
    }
}

三、含有泛型的類和方法

1.含有泛型的類

/* 定義一個使用泛型的類 當不確定數據類型的時候可以使用泛型 創建對象時確定那種數據類型傳遞給泛型 */
public class GenericClass<E> {
    private E name;

    public E getName() {
        return name;
    }

    public void setName(E name) {
        this.name = name;
    }
}

2.含有泛型的方法

/* 定義含有泛型的方法 格式:修飾符<泛型> 返回值類型 方法名(參數列表(使用泛型)){} */
public class GenericMethod {
    public static void main(String[] args) {
        method2("e");
    }
    //含有泛型的方法
    public <M> void method1(M m){
        System.out.println(m);
    }
    //含有泛型的靜態方法
    public static <N> void method2(N n){
        System.out.println(n);
    }

}

3.使用含有泛型的類和方法

public class Demo01 {
    public static void main(String[] args) {
        demo01();
        demo02();
    }

    /* 使用含有泛型的類 */
    private static void demo01() {
        GenericClass<Integer> gc1 = new GenericClass();
        gc1.setName(1);
        System.out.println(gc1.getName()+12);

        GenericClass<String> gc2 = new GenericClass();
        gc2.setName("小斑馬");
        System.out.println(gc2.getName());
    }

    /* 使用含有泛型的方法 */
    private static void demo02() {
        //使用含有泛型的方法
        GenericMethod gm = new GenericMethod();
        gm.method1("qwer");
        gm.method1(1);

        //使用含有泛型的靜態方法
        GenericMethod.method2(true);
        GenericMethod.method2('小王');
    }
    
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM