定義簡單泛型類
一個泛型類(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);
}
}
結果
捐贈
若你感覺讀到這篇文章對你有啓發,能引起你的思考。請不要吝嗇你的錢包,你的任何打賞或者捐贈都是對我莫大的鼓勵。