Java一个方法优雅的返回多个值
一个方法返回多个值,可以有多种实现方式
1.放在bean
2.放在map里面
3.使用commons-lang3工具类,返回2个值用Pair,3个值用Triple
1. 使用map

/** * @author liangks * @date 2022/4/26 */ @Data @NoArgsConstructor @AllArgsConstructor class Principal { private String name; } @Data @NoArgsConstructor @AllArgsConstructor class Student { private String name; } @Data @NoArgsConstructor @AllArgsConstructor class Teacher { private String name; } public class MapTest { /** * 使用Map来返回多个对象 * * @return */ public static Map<String, Object> init() { Map<String, Object> map = new HashMap<>(); map.put("teacher", new Teacher("老师A")); map.put("student", new Student("学生A")); map.put("principal", new Principal("校长A")); return map; } // 取值 public static void main(String[] args) { Map<String, Object> init = init(); System.out.println((Teacher) init.get("teacher")); System.out.println((Student) init.get("student")); System.out.println((Principal) init.get("principal")); // Teacher(name=老师A) // Student(name=学生A) // Principal(name=校长A) } }
2. 使用bean

/** * @author liangks * @date 2022/4/26 */ @Data @NoArgsConstructor @AllArgsConstructor class Principal { private String name; } @Data @NoArgsConstructor @AllArgsConstructor class Student { private String name; } @Data @NoArgsConstructor @AllArgsConstructor class Teacher { private String name; } @Data @NoArgsConstructor @AllArgsConstructor @Builder class People { private Principal principal; private Teacher teacher; private Student student; } public class MapTest { /** * 使用一个对象来返回多个对象 */ public static People init() { return new People(new Principal("校长A"), new Teacher("老师A"), new Student("学生A")); } // 取值 public static void main(String[] args) { People init = init(); System.out.println(init.getPrincipal()); System.out.println(init.getTeacher()); System.out.println(init.getStudent()); // Principal(name=校长A) // Teacher(name=老师A) // Student(name=学生A) } }
3. (推荐)使用commons-lang3中的Pair、Triple
引入commons-lang3
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency>
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; 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 liangks * @date 2022/4/26 */ @Data @NoArgsConstructor @AllArgsConstructor class Principal { private String name; } @Data @NoArgsConstructor @AllArgsConstructor class Student { private String name; } @Data @NoArgsConstructor @AllArgsConstructor class Teacher { private String name; } public class Test { /** * 使用Pair来返回2个对象 */ public static Pair<Teacher, Student> initTwoObject() { return new ImmutablePair<>(new Teacher("老师A"), new Student("学生A")); } /** * 使用Triple来返回3个对象 */ public static Triple<Principal, Teacher, Student> initThreeObject() { return new ImmutableTriple<>(new Principal("校长A"), new Teacher("老师A"), new Student("学生A")); } // 取值 public static void main(String[] args) { Pair<Teacher, Student> pair = initTwoObject(); System.out.println(pair.getLeft()); System.out.println(pair.getRight()); // Teacher(name=老师A) // Student(name=学生A) Triple<Principal, Teacher, Student> triple = initThreeObject(); System.out.println(triple.getLeft()); System.out.println(triple.getMiddle()); System.out.println(triple.getRight()); // Principal(name=校长A) // Teacher(name=老师A) // Student(name=学生A) } }
参考文章:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架