java 元祖_JAVA里的元祖类

本文介绍了在Java中如何实现元组,元组作为一种数据传输对象,允许在一个方法中返回多个对象。通过泛型和继承,可以创建不同长度的元组。示例展示了如何创建和使用从两个到四个元素的元组,并提供了简化创建元组的静态泛型方法。元组提高了代码的可读性和效率,特别是在需要组合不同类型数据的情况下。
摘要由CSDN通过智能技术生成

什么是元祖类

java中的方法只能返回单个对象,如果需要返回多个怎么办?通常我们会创建一个额外的对象,或者把返回内容放入集合中返回,另外,我们也有其他的选择:结合泛型,我们可以把一组对象直接打包存储于单一对象中,之后从该对象中读取元素,并能明确知道各元素的类型,安全的使用它们。

这个概念称为元组,也称为 数据传输对象(即DTO) 或 信使 。

通常,元组可以具有任意长度,元组中的对象可以是不同类型的。不过,我们希望能够为每个对象指明类型,并且从元组中读取出来时,能够得到正确的类型。要处理不同长度的问题,我们需要创建多个不同的元组。下面是一个可以存储两个对象的元组:

public class Tuple2 {

public final A a1;

public final B a2;

public Tuple2(A a, B b) { a1 = a; a2 = b; }

}

public和final的结合保证了元素的可读性和不可修改性。元祖对象的类型组成依赖于传递参数的顺序。

我们可以利用继承来实现更长的元祖:

public class Tuple3 extends Tuple2 {

public final C a3;

public Tuple3(A a, B b, C c) {

super(a, b);

a3 = c;

}

}

public class Tuple4 extends Tuple3 {

public final D a4;

public Tuple4(A a, B b, C c, D d) {

super(a, b, c);

a4 = d;

}

}

使用元组时,你只需要定义一个长度适合的元组,将其作为返回值即可。注意下面例子中方法的返回类型:

public class TupleTest {

static Tuple2 f() {

// 47 自动装箱为 Integer

return new Tuple2<>("hi", 47);

}

static Tuple3 g() {

return new Tuple3<>(new Student(), "hi", 47);

}

}

使用类型参数推断 ,我们可以创建若干重载的静态泛型方法来略去new操作的繁琐性:

public class Tuple {

public static Tuple2 tuple(A a, B b) {

return new Tuple2<>(a, b);

}

public static Tuple3

tuple(A a, B b, C c) {

return new Tuple3<>(a, b, c);

}

}

public class TupleTest {

static Tuple2 f() {

return tuple("hi", 47);

}

static Tuple3 g() {

return tuple(new Student(), "hi", 47);

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值