经常有这样的操作,在一个方法体里返回多个不同类型的对象,Java的return只能返回一个数据对象。为了方便,为了节省时间,为了装x,也不要自己写一个类型封装了,使用commons-lang3所提供的元组来容装多个数据对象并返回。
Example:
public class Lang3Demo {
private static List<User> userList = Lists.newArrayList();
static {
User user = new User();
user.setId(123);
user.setName("jack");
User user1 = new User();
user1.setId(124);
user1.setName("tom");
userList = Lists.newArrayList(user, user1);
}
public Pair<Integer, List<User>> returnDataByPair() {
return new ImmutablePair<>(42, userList);
}
Triple<String, Integer, List<User>> returnDataByTriple() {
return new ImmutableTriple<>("userList", 42, userList);
}
@Test
public void testTuple() {
// 二元组
Pair<Integer, List<User>> integerListPair = returnDataByPair();
System.out.println(integerListPair.getLeft() + ": " + integerListPair.getRight());
// 三元组
Triple<String, Integer, List<User>> uTriple = returnDataByTriple();
System.out.println(uTriple.getLeft() + " -> " + uTriple.getMiddle() + ": " + uTriple.getRight());
}
}
Output:
42: [User{id=123, type=’null’, name=’jack’, date=’null’, money=null, isOk=null}, User{id=124, type=’null’, name=’tom’, date=’null’, money=null, isOk=null}]
userList -> 42: [User{id=123, type=’null’, name=’jack’, date=’null’, money=null, isOk=null}, User{id=124, type=’null’, name=’tom’, date=’null’, money=null, isOk=null}]
通过元组的getLeft()
getMiddle()
getRight()
去获取里面盛放的不同类型的对象,其乐而不为呢!
参考:
Java元组Tuple使用实例