场景
实际开发过程中,总会遇到需要返回多个值这种场景,用java的话,一般是会定义一个pojo,vo,dto等这样的类,或者干脆直接放到Map中,这两种方式其实都不是很方便。前者需要频繁定义一些类,后者对于返回值的类型调用方并不知道里面是啥。
解决方案
通过三方的依赖库java tuples的魔板类来管理随时变化的各种多个返回值的问题。最重要的是最多支持十个返回值。
实践
maven引入
<!-- https://mvnrepository.com/artifact/org.javatuples/javatuples -->
<dependency>
<groupId>org.javatuples</groupId>
<artifactId>javatuples</artifactId>
<version>1.2</version>
</dependency>
实际上实现原理也很简单,自己都可以定义一个工具模板类来实现。支持的类型:
Unit<A> (1 element)
Pair<A,B> (2 elements)
Triplet<A,B,C> (3 elements)
Quartet<A,B,C,D> (4 elements)
Quintet<A,B,C,D,E> (5 elements)
Sextet<A,B,C,D,E,F> (6 elements)
Septet<A,B,C,D,E,F,G> (7 elements)
Octet<A,B,C,D,E,F,G,H> (8 elements)
Ennead<A,B,C,D,E,F,G,H,I> (9 elements)
Decade<A,B,C,D,E,F,G,H,I,J> (10 elements)
实际使用
同一个模块,有不同类型的返回值
Triplet<Boolean, Integer, Mail> readMail(Long mailId);
Triplet<Boolean, Integer, List<Long>> deleteMail(Long mailId);