我想创建具有两个值的通用元组。例如一个具有两个字符串或两个整数的元组等(通用值)。但它不应该能够混合两个元素,例如一个字符串与一个整数(例如一个哈希映射)。创建具有相同类元素的通用元组
如何创建一个类型相同的元组?此刻,我为元组中的两个元素使用了通配符泛型参数,当然这不会强制开发人员为这两个元素使用相同的类类型。
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