public class TwoTuple<A, B> {
public final A first;
public final B second;
public TwoTuple(A first, B second) {
this.first = first;
this.second = second;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "("+first+" , "+second+")";
}
}
package generic;
public class ThreeTuple<A, B, C> extends TwoTuple<A, B> {
public final C c;
public ThreeTuple(A a, B b, C c) {
super(a, b);
this.c = c;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "("+first+" , "+second+" , "+c+")";
}
}
package generic;
public class FourTuple<A, B, C, D> extends ThreeTuple<A, B, C> {
public final D d;
public FourTuple(A a, B b, C c, D d) {
super(a, b, c);
this.d = d;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "(" + first + " , " + second + " , " + c + " , " + d +")";
}
}
package generic;
public class TupleTest {
static TwoTuple<String, Integer> two() {
return new TwoTuple<String, Integer>("first", 12);
}
static ThreeTuple<String, Integer, DemoClass1> three() {
return new ThreeTuple<String, Integer, DemoClass1>("first", 12,
new DemoClass1());
}
static FourTuple<String, Integer,DemoClass1,DemoClass2> four() {
return new FourTuple("first", 12,new DemoClass1(),new DemoClass2());
}
public static void main(String[] args) {
System.out.println(two());
System.out.println(three());
System.out.println(four());
}
}
输出
(first , 12)
DemoClass1
(first , 12 , DemoClass1)
DemoClass1
DemoClass2
(first , 12 , DemoClass1 , DemoClass2)