不想把狗放到雞窩裡?那就使用泛型
泛型在Java語言中也是一個重要的概念,利用泛型可以告訴編譯器我們需要什麼樣的類型。泛型經常作用于容器上,比如前面我們說到的List、Set和Map中。利用泛型可以讓我們的代碼更加的泛化。
泛型作用于類
泛型不僅可以作用于類上:
public class Xpp<T> {
private T a;
public Xpp(T a) {
this.a = a;
}
public void set(T a) {
this.a = a;
}
public T get() {
return a;
}
}
需要使用什麼類型參數,就在類名後面添加尖括号,尖括号中是T,T是Type的意思,也就是Java類,表示的是類型參數,暫時不指定類型。
泛型也可以作用于匿名内部類。
泛型作用于方法
泛型還可以作用于方法上:
public class Xpp {
public <T> void foo(T x) {
System.out.println(x.getClass().getName());
}
public static <T> List<T> makeList(T... args) {
List<T> result = new ArrayList<T>();
for (T item : args)
result.add(item);
return result;
}
public static void main(String[] args) {
Xpp xpp = new Xpp();
xpp.foo("");
xpp.foo(1);
xpp.foo(1.0);
List<String> ls = makeList("A");
System.out.println(ls);
ls = makeList("A", "B", "C");
System.out.println(ls);
}
}
這裡定義了兩個泛型的方法,第一個方法可以傳入任何類型的參數,可以看出傳回的參數類型也是任何類型的參數。
這個代碼的輸出結果為參數類型,即
java.lang.String
java.lang.Integer
和
java.lang.Double
,
第二個方法表示可以傳入不定數目的任何類型的參數,使用
T... args
來表示。
泛型作用于接口
泛型還可以作用于接口上:
定義接口:
public interface Xpp<T> {
T next();
}
這裡定義了一個泛型的接口,可以有如下的實作類:
public class Integer implements Generator<java.lang.Integer> {
private int value = 0;
public java.lang.Integer next() {
return value++;
}
}
實作類中指明了具體的參數類型為Integer類型。
泛型标記符
總結
❤️ 感謝大家
- 歡迎關注我❤️,點贊👍🏻,評論🤤,轉發🙏
- 關注
,定期為你推送好文,還有群聊不定期抽獎活動,可以暢所欲言,與大神們一起交流,一起學習。盼盼小課堂
- 有不當之處歡迎批評指正。