一个方法返回多个值,可以有多种实现方式
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)
}
}