package com.cxyapi.generics; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import net.sf.json.JSONObject; /** Java方法返回多种类型 * @author cxy @ www.cxyapi.com */ public class ReturnMultipleResult { public static void main(String[] args) { //方式一:使用json JSONObject result1=ReturnMultipleResult.way1(); System.out.println(result1); JSONObject jos=(JSONObject)result1.get("s"); System.out.println(jos.get("name")); /* JSONObject中存放的都是Object类型(其实是JSONObject类型) * 如果想使用原来的类型,还需要其他的转换方式(toBean方法) * 但是toBean方法 对于 有自定义构造函数的class,还需要一个init方法或定义映射 * 好麻烦呀~ * 并且这种方式还需要导入各种jar包 * 但是这种方式并不是一无是处,在action/controller层面还是很好用的,不适合纯业务处理的bo层。 */ System.out.println("========================"); //方式二:集合 Map<String,Object> result2=ReturnMultipleResult.way2(); System.out.println(result2); for(Entry<String, Object> one: result2.entrySet()) { if(one.getKey().equals("s")) { Student s=(Student)one.getValue(); s.show(); }else if(one.getKey().equals("t")) { Teacher t=(Teacher)one.getValue(); t.show(); } } /* 这种方式采用Object超级父类来擦出类型差异 * 但是这种方式处理起来比较复杂,你需要自己判断到底是哪种类型的,并做相应的类型转化 */ System.out.println("========================"); //方式三:使用泛型元组 TwoTuple<Student, Teacher> result3=ReturnMultipleResult.way3(); result3.first.show(); result3.second.show(); System.out.println(new TwoTuple<String,Integer>("cxy",1)); //应该不用多说了吧~ 优势太明显了,不用判断,不用转型,不用导入jar包,随意更换类型 } //方式一:使用json返回多个结果对象 public static JSONObject way1() { Student s=new Student("小明","清华大学"); Teacher t=new Teacher("cxyapi", "Java编程"); JSONObject backObject=new JSONObject(); backObject.put("s", s); backObject.put("t", t); return backObject; } //方式二:集合方式 public static Map<String,Object> way2() { Student s=new Student("小明","清华大学"); Teacher t=new Teacher("cxyapi", "Java编程"); Map<String,Object> backObject=new HashMap<String, Object>(); backObject.put("s", s); backObject.put("t", t); return backObject; } //方式二:泛型元组 public static TwoTuple<Student, Teacher> way3() { Student s=new Student("小明","清华大学"); Teacher t=new Teacher("cxyapi", "Java编程"); return new TwoTuple<Student, Teacher>(s,t); } }
分类:
JAVA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2012-02-27 Jquery: jquery.combogrid-1.5.0 ,json返回下拉列表.
2012-02-27 静态新闻分页的js解决方案