泛型的實際應用示例
1. 集合框架中的泛型
在Java的集合框架中,泛型被廣泛使用以確保類型安全并減少運行時錯誤。以下是一個使用泛型ArrayList的示例:
java
import java.util.ArrayList; |
import java.util.List; |
public class GenericCollectionsExample { |
public static void main(String[] args) { |
// 創建一個存儲String類型對象的ArrayList |
List<String> stringList = new ArrayList<>(); |
stringList.add("Hello"); |
stringList.add("World"); |
// 嘗試添加非String類型對象將導致編譯錯誤 |
// stringList.add(123); // 編譯錯誤 |
// 遍歷并打印列表中的元素 |
for (String s : stringList) { |
System.out.println(s); |
} |
} |
} |
2. 泛型方法和類
泛型方法和類允許我們編寫可重用的代碼,這些代碼可以處理多種數據類型。以下是一個泛型類的示例,該類表示一個“盒子”,可以容納任何類型的對象:
java
public class Box<T> { |
private T item; |
public Box(T item) { |
this.item = item; |
} |
public T getItem() { |
return item; |
} |
public void setItem(T item) { |
this.item = item; |
} |
// 示例:使用Box類存儲和檢索Integer和String對象 |
public static void main(String[] args) { |
Box<Integer> intBox = new Box<>(123); |
System.out.println("Integer in box: " + intBox.getItem()); |
Box<String> stringBox = new Box<>("Hello"); |
System.out.println("String in box: " + stringBox.getItem()); |
} |
} |
3. 泛型接口
泛型接口與泛型類和泛型方法類似,允許我們定義類型安全的接口。以下是一個泛型接口的示例,它表示一個可以存儲和檢索數據的倉庫:
java
public interface Repository<T> { |
T get(int id); |
void put(int id, T item); |
} |
// 實現該接口的類需要指定具體的類型參數 |
public class StringRepository implements Repository<String> { |
private Map<Integer, String> data = new HashMap<>(); |
@Override |
public String get(int id) { |
return data.get(id); |
} |
@Override |
public void put(int id, String item) { |
data.put(id, item); |
} |
} |
// 使用StringRepository |
public class RepositoryUsageExample { |
public static void main(String[] args) { |
Repository<String> repo = new StringRepository(); |
repo.put(1, "Hello"); |
System.out.println(repo.get(1)); // 輸出 "Hello" |
} |
} |
4. 泛型通配符
在處理泛型時,有時我們需要表示未知的類型,或者表示一個類型的超集或子集。Java提供了通配符(wildcards)來實現這一點。以下是一個使用泛型通配符的示例:
java
import java.util.List; |
public class WildcardExample { |
// 接收任何類型的List作為參數 |
public static void printList(List<?> list) { |
for (Object item : list) { |
System.out.println(item); |
} |
} |
public static void main(String[] args) { |
List<String> stringList = Arrays.asList("a", "b", "c"); |
List<Integer> intList = Arrays.asList(1, 2, 3); |
printList(stringList); // 輸出字符串 |
printList(intList); // 輸出整數 |
} |
} |
以上示例展示了泛型在Java編程中的實際應用,包括集合框架、泛型方法、泛型類和泛型接口的使用,以及泛型通配符的概念。這些示例可以幫助我們更好地理解和應用Java中的泛型特性。