App下載

為什么我們需要 Java 中的泛型方法?

幼稚園新童鞋 2021-09-04 17:27:44 瀏覽數(shù) (2210)
反饋

在Java語言中,泛型有著很重要的地位。那么為什么泛型這么重要?以及為什么我們需要泛型方法呢?下面文章將通過展示有無泛型類型的方法,來為大家詳細(xì)講解原因。

1. 沒有泛型類型的方法

假設(shè)你想編寫一個方法,該方法需要兩個集合并獲得它們的交集。這是編寫此類方法的一種方法:

public static Set getIntersection(Set set1, Set set2){
	Set result = new HashSet();
 
	for(Object o: set1){
		if(set2.contains(o))
			result.add(o);
	}
 
	return result;
}

此方法不是類型安全的,編譯器會給出警告。它有幾個潛在的問題。首先,當(dāng)方法被調(diào)用并返回一些集合時,調(diào)用者可能不知道類型并且需要對每個元素進(jìn)行強(qiáng)制轉(zhuǎn)換操作。其次,不能將兩個不同類型的集合傳遞給方法。最后,一般來說,我們應(yīng)該始終修復(fù)警告消息。

2. 泛型方法

該方法可以通過指定一個泛型類型來修復(fù),如下所示:

public static <E> Set<E> getIntersection(Set<E> set1, Set<E> set2){
	Set<E> result = new HashSet<E>();
 
	for(E o: set1){
		if(set2.contains(o))
			result.add(o);
	}
 
	return result;
}

此方法是類型安全的,沒有警告。我們指定三個集合的元素類型應(yīng)該是相同的E。這樣調(diào)用者就知道返回類型了,所以可以直接使用它的元素而不需要強(qiáng)制轉(zhuǎn)換。現(xiàn)在對元素類型有嚴(yán)格的限制,所以只有兩個元素類型相同的集合才能得到交集。

請注意,<E>在這種情況下,類型參數(shù)列表位于方法的修飾符與其返回類型之間。


0 人點贊