java 元祖_JAVA里的元祖类
什么是元祖类
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);
}
}
java 元祖_JAVA里的元祖类相关推荐
- java克隆实现_JAVA里的深克隆与浅克隆实现
概括起来说,JAVA里想让一个类的实例可以克隆,需要两步: 1.令该类实现Cloneable接口,这是一个标记接口,用来表示这个类是可被克隆的类型(没这个标记的话调用java.lang.Object. ...
- java file 对象_Java里File对象的问题。
Java里File对象的问题. 关注:282 答案:2 mip版 解决时间 2021-02-02 07:14 提问者鉨瞞着所囿亾,爱着誰 2021-02-01 08:59 import java. ...
- java外部类_Java里什么叫内部类什么叫外部类
展开全部 对普通类(没有内部类的类)来说,62616964757a686964616fe78988e69d8331333337396234内部类和外部类都与他无关:对有内部类的类来说,它们就是其内部类 ...
- java取得一月_Java里,如何得到一个月有多少天
展开全部 按照你62616964757a686964616fe78988e69d8331333361326239的要求,如何得到一个月有多少天,这里并没有说是什么年份,所以默认当年(不同年份的月份天数 ...
- redis的java客户端名称_java里常用的redis客户端简介
zepto返回顶部动画 点击返回顶部 function goTop(acceleration, time) { acceleration = acceleration || 0.1; time = t ...
- java 二元组_java里有类似于二元组之类的数据结构么?
二元组(D,R),D是数据元素的有限集,R是D关系上的有限集. 数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来 ...
- java 汉字 数字_java数字转汉字工具类详解
/** * Created by 33303 on 2017/7/28. */ import java.math.BigDecimal; /** * 数字转换为汉语中人民币的大写 * */ publi ...
- java example 去重_Java中mybatis关于example类的使用详解
这几天刚接触example,很多内容都是破碎的,写一篇博文加深理解. 一.什么是example类 mybatis-generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的 ...
- 另一个.java文件调用_java - 如何调用另一个类“写文件”的方法? - SO中文参考 - www.soinside.com...
在我的Android应用程序,我想有一类处理所有"写入/读取到文本文件"的行动.所以,我根本就调用我的readUserFile.java文件我想的方法.但我的方法将不会在该文件中工 ...
最新文章
- Linux下安装和使用boost库
- 使用显式Intent向下一个活动传递数据
- 光感是什么_Olay5款热门精华:淡斑小白瓶VS光感小白瓶如何选?超A瓶不太A
- 如何把网址配置为http和https可以同时访问
- 实名开撕!格力举报奥克斯空调虚标不合格 奥克斯回应:将起诉!
- Linux驱动编写(块设备驱动代码)
- python的文件读写,序列化,复制/删除目录,压缩/解压缩/列出压缩文件目录,计算CRC32和MD5
- mysql运用实例_mysql应用实例
- 在指定文件类型中递归查找到目标字符串
- 常见机器人离线编程软件对比
- 交换机基础知识点思维导图
- iOS8官方推荐图标和图像尺寸
- 环境科学概论知识点总结
- JavaScript 实现延迟合并处理任务
- Dragonfly 基于 P2P 的文件和镜像分发系统
- 服务端高并发分布式架构演进
- Unity (C#) 使用 LitJson 处理 JSON 数据
- python爬虫脚本获取网易招聘某个职业的全部数据信息
- 漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
- Volley添加header发送请求