天天看點

泛型【小白學Java-學習筆記19】

1.定義和使用含有泛型的類

package generic.demo1;

/**
 * 定義一個含有泛型的類,泛型是一個未知的資料類型,當我們不确定什麼資料類型的時候,我們可以使用泛型
 * 泛型可以接收任意的資料類型,如Integer,String,Student
 * 建立對象的的時候确定泛型的資料類型
 * @param <E>
 */
public class Demo01Generic <E>{
    private E game;

    public E getGame() {
        return game;
    }

    public void setGame(E game) {
        this.game = game;
    }
}

           
package generic.demo1;

public class Demo02GenericClass {
    public static void main(String[] args) {
        //Demo01Generic類不寫泛型,則預設是Object類型
        Demo01Generic gc = new Demo01Generic();
        gc.setGame("so angry ");
        //建立Demo01Generic對象,泛型使用Integer類型
        Demo01Generic<Integer> gc2 = new Demo01Generic<>();
        gc2.setGame(1);
        Integer game = gc2.getGame();
        System.out.println(game);

        //建立Demo01Generic對象,泛型使用String類型
        Demo01Generic<String> gc3 = new Demo01Generic<>();
        gc3.setGame("lobster");
        String game1 = gc3.getGame();
        System.out.println(game1);
    }
}

           

運作結果

泛型【小白學Java-學習筆記19】

2.定義和使用含有泛型的方法

含有泛型的方法的定義格式如下

修飾符<泛型> 傳回值類型 方法名(參數清單(使用泛型)){
	//方法體
}
           

注意:含有泛型的方法在調用的時候确定泛型的資料類型。傳遞什麼類型的參數,泛型就是什麼類型

package generic.demo1;

/**
 * 含有泛型的方法
 * 含有泛型的方法的定義格式如下
 * 修飾符<泛型> 傳回值類型 方法名(參數清單(使用泛型)){
 * 	//方法體
 * }
 * 注意:含有泛型的方法在調用的時候确定泛型的資料類型。傳遞什麼類型的參數,泛型就是什麼類型
 */
public class GenericMethod {
    //定義一個含有泛型的方法
    public <M> void method(M m){
        System.out.println(m);
    }
    //定義一個含有泛型的靜态方法
    public static <S> void method1(S s){
        System.out.println(s);
    }
}

           
package generic.demo1;

/**
 * 測試含有泛型的方法
 */
public class Demo03GenericMethod {
    public static void main(String[] args) {
        //建立一個GenericMethod對象
        GenericMethod gc = new GenericMethod();
        //調用含有泛型的方法,傳遞什麼類型,泛型就是什麼類型
        gc.method(10);
        gc.method("abc");
        gc.method(8.8);
        gc.method(true);
        System.out.println("========");
        gc.method1("靜态方法,不建議通過建立對象使用,可以用更好的方法");
        //靜态方法可以怎麼調用?
        //類名.靜态方法名(參數)
        GenericMethod.method1("這是一個含有泛型的靜态方法");
        GenericMethod.method1(1);
        GenericMethod.method1(8.8);
        GenericMethod.method1(true);
    }
}

           

運作結果

泛型【小白學Java-學習筆記19】

3.定義和使用含有泛型的接口

案例說明

package generic.demo1;

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

           
package generic.demo1;
/*
GenericInterface接口的實作類1
 */
public class GenericInterfaceImpl1 implements GenericInterface<String>{
    //重寫接口的抽象方法
    @Override
    public void method(String s) {
        System.out.println(s);
    }


}

           
package generic.demo1;

/**
 * 含有泛型的接口的實作類2
 */
public class GenericInterfaceImpl2<I> implements GenericInterface<I> {
    @Override
    public void method(I i) {
        System.out.println(i);
    }
}

           
package generic.demo1;

/**
 * 測試含有泛型的接口
 */
public class Demo04GenericInterface {
    public static void main(String[] args) {

        //建立GenericInterfaceImpl1對象
        GenericInterfaceImpl1 gci1 = new GenericInterfaceImpl1();
        gci1.method("字元串");
        //建立GenericInterfaceImpl2對象
        GenericInterfaceImpl2<Integer> gci2 = new GenericInterfaceImpl2<>();
        gci2.method(10);
        GenericInterfaceImpl2<Double> gci3 = new GenericInterfaceImpl2<>();
        gci3.method(8.8);



    }
}

           

運作結果

泛型【小白學Java-學習筆記19】