【java基礎(五十一)】定義簡單泛型類

定義簡單泛型類

一個泛型類(generic class)就是具有一個或多個類型變量的類。使用一個簡單的Pair類作爲例子,這個例子,我們只關注泛型:

public class Pair<T> {
	private T first;
	private T second;

	public Pair() {
		first = null;
		second = null;
	}

	public Pair(T first, T second) {
		this.first = first;
		this.second = second;
	}
	
	public T getFirst() {
		return first;
	}

	public T getSecond() {
		return second;
	}

	public void setFirst(T newValue) {
		first = newValue;
	}

	public void setSecond(T newValue) {
		second = newValue;
	}
}

Pair類引入了一個類型變量T,用尖括號(<>)括起來,並放在類名的後面。泛型類可以有多個類型變量。例如,可以定義Pair類,其中第一個域和第二個域使用不同的類型。

public class Pair<T, U> {
	...
}

類定義中的類型變量指定方法的返回類型以及域和局部變量的類型,如:

private T first;

用具體的類型替換類型變量就可以實例化泛型類型,如:

Pair<String>

可以將結果想象成帶有構造器的普通類:

Pair<String>()
Pair<String>(String, String)

和方法:

String getFirst();
String getSecond();
void setFirst(String);
void setSecond(String);

話句話說,泛型類可看作普通類的工廠。

實例

Pair.java

package cn.freedompc.pair;

public class Pair<T> {
	private T first;
	private T second;

	public Pair() {
		first = null;
		second = null;
	}

	public Pair(T first, T second) {
		this.first = first;
		this.second = second;
	}
	
	public T getFirst() {
		return first;
	}

	public T getSecond() {
		return second;
	}

	public void setFirst(T newValue) {
		first = newValue;
	}

	public void setSecond(T newValue) {
		second = newValue;
	}
}

PairTest1.java

package cn.freedompc.pair;

public class PairTest1 {
	
	public static void main(String[] args) {
		String[] words = {"Mary", "had", "a", "little", "lamb"};
		Pair<String> mm = ArrayAlg.minmax(words);
		System.out.println("min = " + mm.getFirst());
		System.out.println("max = " + mm.getSecond());
	}
	
}

class ArrayAlg {
	public static Pair<String> minmax(String[] a) {
		if (a == null || a.length == 0)
			return null;
		
		String min = a[0];
		String max = a[0];
		for (int i = 1; i < a.length; i++) {
			if (min.compareTo(a[i]) > 0) min = a[i];
			if (max.compareTo(a[i]) < 0) max = a[i];
		}
		return new Pair<>(min, max);
	}
}

結果

在這裏插入圖片描述

捐贈

若你感覺讀到這篇文章對你有啓發,能引起你的思考。請不要吝嗇你的錢包,你的任何打賞或者捐贈都是對我莫大的鼓勵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章