我想創建具有兩個值的通用元組。例如一個具有兩個字符串或兩個整數的元組等(通用值)。但它不應該能夠混合兩個元素,例如一個字符串與一個整數(例如一個哈希映射)。創建具有相同類元素的通用元組
如何創建一個類型相同的元組?此刻,我爲元組中的兩個元素使用了通配符泛型參數,當然這不會強制開發人員爲這兩個元素使用相同的類類型。
import java.io.Serializable;
public class Main {
class Element<T extends Comparable<?> & Serializable> {
private final T element;
public Element(T element) {
this.element = element;
}
public String raw() {
return element.toString();
}
}
class Tuple<T extends Element<?>, U extends Element<?>> {
private final Element<?> element1;
private final Element<?> element2;
public Tuple(Element<?> element1, Element<?> element2) {
this.element1 = element1;
this.element2 = element2;
}
public Element<?> getElement1() {
return element1;
}
public Element<?> getElement2() {
return element2;
}
}
public static void main(String[] args) {
new Main();
}
public Main() {
Element<String> element1 = new Element<String>(new String("First tuple element"));
Element<String> element2 = new Element<String>(new String("Second tuple element"));
Element<Integer> wrongelement = new Element<Integer>(42); // <-- Should not be possible, but it is...
Tuple<Element<String>, Element<String>> tuple = new Tuple<Element<String>, Element<String>>(element1, element2);
// First tuple element
System.out.println(tuple.getElement1().raw());
// Second tuple element
System.out.println(tuple.getElement2().raw());
}
}
謝謝,我不知道爲什麼我沒有想到這一點。 – swaechter