java处理方法的多个返回值

我第一次接触到元组是在java编程思想这本书中,当时我正为方法的多个返回值苦恼。因为我之前处理多个返回值方法的时候,要不建一个新的实体类,要不在接收的方法中建立一个对象,返回值之前给其赋值,要不通过异常机制向上抛出,不管哪一种都很繁琐。但是元组不一样,我们只要建立好元组类 和工具类就可以在任何地方使用,而且简单,明了。

/***
* 功能描述:登录
* @author 程三发 2016-5-26 下午03:21:30
* @param loginName 用户名
* @param appType 用户类型 1学生 其他 老师
* @param loginPass 登录密码
* @return
*/
public TwoTuple<Integer,TUser> SignIn(String loginName,Integer appType,String loginPass) {
if(EmptyUtils.isEmpty(loginName)||EmptyUtils.isEmpty(appType))
return TupleUtil.tuple(0,null);//参数错误
TUser user=get(TUser.class,"loginName",loginName);
if(appType==1){
if(user.getUserType()!=1)
return TupleUtil.tuple(-1,null);
}else{
if(user.getUserType()==1)
return TupleUtil.tuple(-1,null);
}
if(EmptyUtils.isEmpty(user))
return TupleUtil.tuple(-1,null);//用户名不存在
if(!user.getLoginPass().equals(loginPass))
return TupleUtil.tuple(-2,null);//密码错误
return TupleUtil.tuple(1,user);
}

/***
* 功能描述:登录
* @author 程三发 2016-5-4 上午11:43:38
* @param loginName
* @param loginPass
* @return
*/
public AppCommonModel SignIn(String loginName,String loginPass,Integer appType){
TwoTuple<Integer,TUser> twoTule= userService.SignIn(loginName,appType,loginPass);
String msg="";
switch (twoTule.first) {
case 0:
msg="参数不能为空";
break;
case -2:
msg="密码错误";
break;
case -1:
msg="用户名不存在";
break;

default:
return new AppCommonModel(twoTule.first,"登录成功",twoTule.second);
}
return new AppCommonModel(AppCommonModel.ERROR,msg,"{}");
}

这是我用元组写的一个登陆接口,思路很简单,但是却要返回两个参数,使用元组后处理变得简单很多。

定义元组

public class TwoTuple<A, B> {

public final A first;
public final B second;

public TwoTuple(A a, B b) {
this.first = a;
this.second = b;
}

}

元组工具类

public class TupleUtil {
/***
* 功能描述:二维元组
* @author 程三发 2016-5-24 上午09:35:38
* @param <A>
* @param <B>
* @param a
* @param b
* @return
*/
public static <A, B> TwoTuple<A, B> tuple(A a, B b) {
return new TwoTuple <A, B>(a, b);
}

}

无论定义元组还是元组工具类都很简洁,而且使用它也非常简单。

这里我要说明一下元组用public final 定义的而且只有构造方法,所以它只能在创建它的时候赋值,而不能在别的给其赋值,所以不用担心它不够安全。

原文地址:https://www.cnblogs.com/jishuzhaichen/p/5533408.html