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) } }
参考文章:

浙公网安备 33010602011771号