泛型類和泛型介面的學習
阿新 • • 發佈:2021-01-31
技術標籤: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;
}
}