有时候,我们想一个对象可以方便持有多个对象,这样我们就需要使用元组。
package generics;
/**
* 元组概念 将一组对象直接打包存储于其中的 单一对象(这个容器对象允许读取其中元素,但是不允许向其中存放新的对象)。
*
*
*/
// 二维元组
class TwoTuple<A, B> {
// final使得first和second无法修改
public final A first;
public final B second;
public TwoTuple(A a, B b) {
this.first = a;
this.second = b;
}
public String toString() {
return " " + first + " " + second;
}
}
/**
* 使用继承,拓展元组
*/
// 三维元组
class ThreeTuple<A, B, C> extends TwoTuple<A, B> {
public final C third;
public ThreeTuple(A a, B b, C c) {
super(a, b);
this.third = c;
}
public String toString() {
return " " + first + " " + second + " " + third;
}
}
// 四围元组
class FourTuple<A, B, C, D> extends ThreeTuple<A, B, C> {
public final D fourth;
public FourTuple(A a, B b, C c, D d) {
super(a, b, c);
this.fourth = d;
}
public String toString() {
return " " + first + " " + second + " " + third + " " + fourth;
}
}
// 五维元组
class FiveTuple<A, B, C, D, F> extends FourTuple<A, B, C, D> {
public final F five;
public FiveTuple(A a, B b, C c, D d, F f) {
super(a, b, c, d);
this.five = f;
}
public String toString() {
return "" + first + " " + second + " " + third + " " + fourth + " "
+ five;
}
}
class Amphibian {
};
class Vehicle {
};
public class TupleDemo<A, B> {
static TwoTuple<String, Integer> f() {
return new TwoTuple<String, Integer>("hi", 47);
}
static ThreeTuple<Amphibian, String, Integer> g() {
return new ThreeTuple<Amphibian, String, Integer>(new Amphibian(),
"hi", 47);
}
static FourTuple<Vehicle, Amphibian, String, Integer> h() {
return new FourTuple<Vehicle, Amphibian, String, Integer>(
new Vehicle(), new Amphibian(), "hi", 47);
}
static FiveTuple<Vehicle, Amphibian, String, Integer, Double> i() {
return new FiveTuple<Vehicle, Amphibian, String, Integer, Double>(
new Vehicle(), new Amphibian(), "hi", 47, 11.1);
}
public static void main(String[] args) {
TwoTuple<String, Integer> ttsi=f();
System.out.println(ttsi);
System.out.println(g());
System.out.println(h());
System.out.println(i());
}
}
输出
hi 47
generics.Amphibian@6d06d69c hi 47
generics.Vehicle@7852e922 generics.Amphibian@4e25154f hi 47
generics.Vehicle@70dea4e generics.Amphibian@5c647e05 hi 47 11.1