我第一次接触到元组是在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 定义的而且只有构造方法,所以它只能在创建它的时候赋值,而不能在别的给其赋值,所以不用担心它不够安全。

java处理方法的多个返回值的更多相关文章

  1. 谁说java里面有返回值的方法必须要有返回值,不然会报错????

    慢慢的总是发现以前的学得时候有些老师讲的不对的地方! 所以还是尽量别把一些东西说的那么绝对,不然总是很容易误导别人,特别是一些你自己根本就没有试过的东西,然后又斩钉截铁的告诉别人,这样不行,肯定不行什 ...

  2. Java常见面试题02-方法重写和方法重载的区别?方法重载能改变返回值类型吗?

    方法重写和方法重载的区别?方法重载能改变返回值类型吗?       A:Override方法重写和Overload方法重载的区别? Overload是否可以改变返回值类型?可以 方法重写 •  子类中 ...

  3. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

    方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现.如 ...

  4. 方法的重写与重载的区别(Override与Overload)。重载的方法是否可以改变返回值的类型

    方法的重写(Override)与重载(Overload)的区别.重载的方法是否可以改变返回值的类型?[基础] 解释: 方法的重写overriding和重载Overloading是Java多态性的不同表 ...

  5. java使用Filter过滤器对Response返回值进行修改

    转:java使用Filter过滤器对Response返回值进行修改 练习时只做了对request 的处理,这里记录一下,filter 对 response的处理. 原文地址:java使用Filter过 ...

  6. 转:java使用Filter过滤器对Response返回值进行修改

    练习时只做了对request 的处理,这里记录一下,filter 对 response的处理. 原文地址:java使用Filter过滤器对Response返回值进行修改 有时候在开发过程中会有这样一个 ...

  7. Overloaded的方法是否可以改变返回值的类型

    摘要: 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同) Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载 ...

  8. Override和Overload差别,Overloaded的方法能否够改变返回值的类型?

    Overload是重载的意思, Override是覆盖的意思,也就是重写. 重载Overload表示同一个类中能够有多个名称同样的方法,但这些方法的參数列表各不同样(即參数个数或类型不同). 重写Ov ...

  9. Overload重載和Override重写的区别。Overloaded的方法是否可以改变返回值的类型?

    Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同). 重写Ove ...

随机推荐

  1. 百度地图api逆地址解析 PHP

    一.说明:逆地址查询就是根据经纬度信息获取地址位置信息 二.参数:$lat:纬度值 ,$lng:经度值 ,$ak = 自己的AK:(百度地图开放平台对应ak链接:http://lbsyun.baidu ...

  2. Codeforces Round #661 (Div. 3)

    A. Remove Smallest 题意:数组是否满足任意i,j保证|ai-aj|<=1,如果都可以满足,输出YES,否则输出NO 思路:直接排序遍历即可 代码: 1 #include< ...

  3. IP子网划分与聚合

    一:IP地址: IP地址是由32位2进制数组成,每8位一组.由点分十进制表达. IP地址可以分为五类 A类(1.0.0.0-126.255.255.255),127.0.0.1 为本地回环地址. B类 ...

  4. sscanf的应用

    1.提取字符串 2.提取指定长度的字符串 3.提取指定字符为止的字符串 4.取仅包含指定字符集的字符串 5.取到指定字符集为止的字符串 #include <stdio.h> int mai ...

  5. 项目展示$\alpha$

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求 强制转会与项目展示 我们在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作业在哪个具体方面帮助我们实现目标 ...

  6. 三分钟了解B2B CRM系统的特点

    最近很多朋友想了解什么是B2B CRM系统,说到这里小Z先来给大家说说什么是B2B--B2B原本写作B to B,是Business-to-Business的缩写.正常来说就是企业与企业之间的生意往来 ...

  7. SaaS模式的CRM系统有哪些优势?

    早在10年前(2010年),就出现了SaaS模式的CRM系统.SaaS CRM一经面世,便迅速受到广大企业的青睐. SaaS CRM是指CRM厂家把CRM软件部署在自己的服务器上,有需要的客户能够根据 ...

  8. [刷题] 17 Letter Combinations of a Phone Number

    要求 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合 1 不对应任何字母    示例 输入:"23" 输出:["ad", "ae&q ...

  9. 查询登录信息 w, who*, id, tty, last, finger

    查询登录信息 w, who*, id, tty, last, finger Wavky2016.12.14 16:19:37字数 813阅读 85w [options] [user...]显示所有已登 ...

  10. 012.Kubernetes的configmap和secret配置

    使用configmap对多有的配置文件进行统一管理 一 configmap配置管理 1.1 检查mysql的配置 [root@docker-server1 storage]# kubectl get ...