Java 泛型

Java 泛型

相關文章

相關概念

  • 所謂泛型類(generic class)就是具有一個或多個類型參數的類。
  • 泛型,即“參數化類型”。一提到參數,最熟悉的就是定義方法時有形參,然後調用此方法時傳遞實參。那麼參數化類型怎麼理解呢?顧名思義,就是將類型由原來的具體的類型參數化,類似於方法中的變量參數,此時類型也定義成參數形式(可以稱之爲類型形參),然後在使用/調用時傳入具體的類型(類型實參)。
  • 泛型的本質是爲了參數化類型(在不創建新的類型的情況下,通過泛型指定的不同類型來控制形參具體限制的類型)。也就是說在泛型使用過程中,操作的數據類型被指定爲一個參數,這種參數類型可以用在類、接口和方法中,分別被稱爲泛型類、泛型接口、泛型方法。

泛型類

  • MyGeneric.java
public class MyGenericClass<T> {
    private T myClass;

    public MyGenericClass(T myClass) {
        this.myClass = myClass;
    }

    public T getMyClass() {
        return myClass;
    }

    public void setMyClass(T myClass) {
        this.myClass = myClass;
    }
}
  • MyGenericTest.java
public class MyGenericClassTest {

    @Test
    public void testMyGeneric() {
        MyGenericClass<String> myGenericClass = new MyGenericClass<String>("myGenericClass");
        Assert.assertEquals("myGenericClass", myGenericClass.getMyClass());
    }
}

泛型方法

  • MyGenericMethod.java
public class MyGenericMethod {

    public <T> T getMes(T str) {
        return (T) ("Hello world, " + str);
    }
}
  • MyGenericMethodTest.java
public class MyGenericMethodTest {

    @Test
    public void testMyGenericMethodTest() {
        MyGenericMethod method = new MyGenericMethod();
        Assert.assertEquals("Hello world, chen", method.getMes("chen"));
    }

    @Test
    public void testMyGenericMethodTest2() {
        MyGenericMethod method = new MyGenericMethod();
        Assert.assertEquals("Hello world, 1", method.getMes(1));
    }
}

泛型接口

  • IMyGeneric.java
public interface IMyGeneric<T, V> {
    String show(T t, V v);
}
  • MyGenericImpl.java
public class MyGenericImpl implements IMyGeneric<String, String> {
    public String show(String s, String s2) {
        return s + ", " + s2;
    }
}
  • MyGenericImplTest.java
public class MyGenericImplTest {

    @Test
    public void testMyGenericImpl() {
        MyGenericImpl myGeneric = new MyGenericImpl();
        Assert.assertEquals("Hello, world!", myGeneric.show("Hello", "world!"));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章