Java泛型是一種類型安全且參數(shù)化的機(jī)制,它可以讓代碼更加靈活和通用。泛型的作用就是在不確定類型的情況下,定義一個(gè)可以處理各種類型的類或方法。泛型的使用可以避免強(qiáng)制類型轉(zhuǎn)換和運(yùn)行時(shí)錯(cuò)誤。
//使用泛型定義一個(gè)類 public class Box{ private T t; public void set(T t) { this.t = t; } public T get() { return t; } } //使用泛型定義一個(gè)方法 public T genericMethod(T t) { return t; }
通配符是Java泛型中的一個(gè)特殊符號(hào),可以用來表示一個(gè)未知類型。通配符的使用可以增加泛型的靈活性。
//使用通配符定義一個(gè)方法 public void printList(List>list) { for (Object o : list) { System.out.println(o); } }
在泛型中,有三種通配符:
- ?:表示任何類型
- ? extends T:表示T或T的子類
- ? super T:表示T或T的父類
//使用通配符 ? extends T 定義一個(gè)方法 public void printList(List extends Number>list) { for (Number n : list) { System.out.println(n); } } //使用通配符 ? super T 定義一個(gè)方法 public void addToList(List super Integer>list, Integer i) { list.add(i); }
需要注意的是,通配符不能用于泛型類或泛型方法的定義。通配符只能用于方法參數(shù)、返回值和局部變量的定義。