在实际工作当中,我们偶尔会碰到一个方法要返回1个以上返回值的情况,例如:一个方法要同时返回name=“kaka”,age=18。这该怎么解决呢?
通常有以下几种解决方案:
将返回值放入List中,List作为方法的返回值返回将返回值放入Object数组中,数组作为方法的返回值返回将返回值放入Map中,Map作为方法的返回值返回定义一个Class,返回值作为该Class的属性,该Class作为方法的返回值返回可能大部分人都跳不出以上 4 种解决方案吧?其实还有另外一种方式,那就是采用 org.apache.commons.lang3.tuple(元组),通过将元祖作为返回值返回同样可以解决问题,代码如下:
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutableTriple; import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Triple; /** * @Author: eric * @Date: 2020/9/4 08:37 * @Description: */ public class Demo { /** * 二元组 */ public static Pair<A, B> testPair() { A a = new A(); B b = new B(); return new ImmutablePair<>(a, b); } /** * 三元组 */ public static Triple<A, B, C> testTriple() { A a = new A(); B b = new B(); C c = new C(); return new ImmutableTriple<>(a, b, c); } public static void main(String[] args) { Pair pair = testPair(); System.out.println("a : " + pair.getLeft()); System.out.println("b : " + pair.getRight()); System.out.println("//"); Triple triple = testTriple(); System.out.println("a : " + triple.getLeft()); System.out.println("b : " + triple.getMiddle()); System.out.println("c : " + triple.getRight()); } }输出结果:
a : com.cab5.tuple.A@2ff4acd0 b : com.cab5.tuple.B@54bedef2 // a : com.cab5.tuple.A@8efb846 b : com.cab5.tuple.B@2a84aee7 c : com.cab5.tuple.C@a09ee92啊哈,是不是还不错呢?以此类推是不是会有四元组、五元组 … N元组呢?哈哈哈,恐怕结果会让你失望,只有二元组和三元组。之所以这样,我的理解是完全没必要,如果真的要那么多返回值,还是老老实实的定一个 Class 吧~~