Java元组

有时候,我们想一个对象可以方便持有多个对象,这样我们就需要使用元组。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值