1. 程式人生 > 其它 >泛型類和泛型介面的學習

泛型類和泛型介面的學習

技術標籤:java

目錄

概念

泛型的本質是引數化型別,也就是說所操作的資料型別被指定為一個引數。這種引數型別可以用在類、介面和方法的建立中,分別稱為泛型類、泛型介面、泛型方法。 Java語言引入泛型的好處是安全簡單。

泛型類

在類名的後面加上泛型申明代表該類中有一個泛型,<>中的大寫字母代表型別可以使任意大寫字母。泛型可以指代任意物件型別。我們亦可以有多個如:<T t,E,e>
例子:
泛型類:

package Java;

/**
 * 泛型類
 */
public class Plant<T,E> {
    T t;
E e; public T getT() { return t; } public void setT(T t) { this.t = t; } public E getE() { return e; } public void setE(E e) { this.e = e; } void print(){ System.out.println("t的型別為:"+t.getClass().getName()
); System.out.println("E的型別為:"+e.getClass().getName()); } }

測試類:

package Java;

public class Test {
    public static void main(String[] args) {
        Plant<Integer,String> plant =new Plant<>();
        plant.setT(1);
        plant.setE("hello");
        plant.
print(); } }

輸出結果:
在這裡插入圖片描述

泛型介面

泛型介面與泛型類定義方法類似,但是不可以有具體的實現。只能在器子類中重寫介面方法,在重寫是我們可以指定泛型型別,也可以不指定。
泛型介面定義:

package Java;

public interface Person<T> {
    T say();
}

不指定泛型型別:表示還沒有傳入泛型實參

package Java;

public class Student<T> implements Person<T>{
    @Override
    public T say() {
        return null;
    }
}

指定泛型型別:表示傳入了泛型實參

package Java;

/**
 * 指定泛型型別
 */
public class Student1 implements Person<String> {

    @Override
    public String say() {
        String name = "張三";
        return name;
    }
}