一个类中两个方法,怎么在方法间传值

问题描述

publicclassUserDaoPostextendsDeclarativeWebScript{privateEducationServiceRegistrylemServiceRegistry;publicvoidsetLemServiceRegistry(EducationServiceRegistrylemServiceRegistry){this.lemServiceRegistry=lemServiceRegistry;}@OverrideprotectedMap<String,Object>executeImpl(WebScriptRequestreq,Statusstatus,Cachecache){Contentc=req.getContent();Useruser=newUser();JSONObjectjson;Map<String,Object>map=newHashMap<String,Object>();try{json=newJSONObject(c.getContent());intid=Integer.parseInt((String)json.get("id"));Stringname=(String)json.get("name");intage=Integer.parseInt((String)json.get("age"));user.setId(id);user.setName(name);user.setAge(age);map.put("user",user);}catch(JSONExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnmap;}publicvoidinsert(Useruser)throwsException{Connectionconn=JdbcUtil.getConn();Stringsql="insertintotest1values(?,?,?)";PreparedStatementpstm=conn.prepareStatement(sql);pstm.setInt(1,user.getId());pstm.setString(2,user.getName());pstm.setInt(3,user.getAge());pstm.executeUpdate();if(conn!=null)conn.close();if(pstm!=null)pstm.close();}}第一个方法已经没问题,但是debug后发现跳到returnmap就直接跳出程序了并不执行下面的方法,我想在下面的方法里获取到map,怎么办?

解决方案

解决方案二:
不知道你接下来要执行哪个方法,把map定义为static试试,这样整个类中就都可以引用到了。
解决方案三:
执行下面的insert方法
解决方案四:
第一个方法是接收浏览器传来的id,name,age,下面的方法是将接收的插入数据库【北京】不懂2014/7/111:33:24接收的都放在map里面了但是传不下去11:34:35【北京】不懂2014/7/111:34:35我又在insert方法里写了Map<String,Object>map=this.executeImpl(null,null,null);想调用到上面的方法,接收到返回的map但是debug了还是不执行insert到returnmap直接跳出去了
解决方案五:
executeImpl这个方法的return直接就跳出方法了。不会执行后面的代码了。你想在后面的insert方法里面调用map,可以直接将map声明为static类型。如果想executeImpl执行完就执行insert方法,那就再return上一行调用insert。上面的只是参考建议。楼主的这个类,说是service层又不像service层,说是dao层,又不像dao层。我觉得楼主的思路有些乱,可以理一下。
解决方案六:
publicstaticMap<String,Object>map=newHashMap<String,Object>();在insert方法里不再声明map对象而是引用静态map给它赋值
解决方案七:
你不能获取到executeImpl返回值么?获取到了返回值就把他传给insert不就好了。获取不到的话可以考虑在executeImpl里面执行insert不知道你这个类每次请求是不是都会实例化,不敢说类里面定义一个变量来弄,因为如果仅实例化一次,就像servlet一样会导致并发问题,定义static变量就毫无疑问的会有并发问题了。
解决方案八:
谢谢各位的回答!我获取到了executeimpl的返回值,就是map,想把它传给insert,但是不知道怎么才能传到
解决方案九:
publicstaticMap<String,Object>map=newHashMap<String,Object>();这么写会报错的Eclipse提示publicstatic是多余的,让我移除
解决方案十:
将publicstaticMap<String,Object>map=newHashMap<String,Object>();放在publicclassUserDaoPostextendsDeclarativeWebScript{下面static变量是类级别的,不能在方法中定义楼主去查看下static的作用。
解决方案十一:
publicclassUserDaoPostextendsDeclarativeWebScript{privateEducationServiceRegistrylemServiceRegistry;publicvoidsetLemServiceRegistry(EducationServiceRegistrylemServiceRegistry){this.lemServiceRegistry=lemServiceRegistry;}publicstaticMap<String,Object>map=newHashMap<String,Object>();@OverrideprotectedMap<String,Object>executeImpl(WebScriptRequestreq,Statusstatus,Cachecache){Contentc=req.getContent();Useruser=newUser();JSONObjectjson;try{json=newJSONObject(c.getContent());intid=Integer.parseInt((String)json.get("id"));Stringname=(String)json.get("name");intage=Integer.parseInt((String)json.get("age"));user.setId(id);user.setName(name);user.setAge(age);map.put("user",user);}catch(JSONExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}try{insert(map);}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnmap;}publicvoidinsert(Map<String,Object>map)throwsException{//Map<String,Object>map=this.map;SetkeySet=map.keySet();Iteratorit=keySet.iterator();while(it.hasNext()){Stringkey=(String)it.next();Objectvalue=map.get(key);}Useruser=newUser();user=(User)String.valueOf(value);Connectionconn=JdbcUtil.getConn();Stringsql="insertintotest1values(?,?,?)";PreparedStatementpstm=conn.prepareStatement(sql);pstm.setInt(1,user.getId());pstm.setString(2,user.getName());pstm.setInt(3,user.getAge());pstm.executeUpdate();if(conn!=null)conn.close();if(pstm!=null)pstm.close();}}进入到insert方法了,但是传进来的是map,怎么把map里面的user取出来
解决方案十二:
上面的executeImpl方法里调用直接把user对象传过去不就搞定了么,怎么又把insert参数改掉了

时间: 2024-11-30 14:48:21

一个类中两个方法,怎么在方法间传值的相关文章

C#中说接口是让一个类有两个或两个以上基础类的唯一方法,这句话怎么解释,谢谢!

问题描述 C#中说接口是让一个类有两个或两个以上基础类的唯一方法,这句话怎么解释,谢谢!帮忙举个例子,谢谢! 解决方案 解决方案二:publicinterfaceI1{voidGetX();}publicinterfaceI2{voidGetY();}publicclassclass1:I1,I2{publicvoidGetX(){}publicvoidGetY(){}}解决方案三:我明白楼上说的意思但这种情况,并没有实现一个类有两个或两个以上基础类的情况呀?帮忙指教,谢谢解决方案四:I1,I2

调用方法-怎么用一个对象调用另一个类中对象的方法

问题描述 怎么用一个对象调用另一个类中对象的方法 怎么用一个对象调用另一个类中对象的方法 比如一个类A ,一个类B,B里面有个方法show(),在main中A a=new A();B b=new B();在A中没有调用B方法的情况下,我想通过a调用B中的show()方法,该怎么实现.初学者,求大神给我指导下,不知道我表达的是否准确 解决方案 首先,确认下你是想在A类的某个方法中调用B类的方法吗?如果是的话,A必须依赖B,依赖方法可以是A类关联一个B类的成员变量,示例代码: public clas

action 没有跳转-Action中调用另一个类中的方法时没有跳转,但是新建的其他测试类就可以跳转,WHY?

问题描述 Action中调用另一个类中的方法时没有跳转,但是新建的其他测试类就可以跳转,WHY? action中调用EmailUtil中的sendHtmlMail方法: public void forgetPassword() throws Exception { String email = request.getParameter("email"); User u=userService.getByEmail(email); Json json=new Json(); if (St

class-为什么说java中一个类中定义两个构造函数。

问题描述 为什么说java中一个类中定义两个构造函数. 为什么说java中一个类中定义两个构造函数.是不是意思就是一个是无参构造函数,一个是有参数的构造函数, 解决方案 构造函数可以定义很多个,如同函数重载,只要参数个数类型不同就可以. 因此无参构造函数只能有一个.至于定义2个,可以是一个无参,一个有参,也可以是2个有参. 解决方案二: oh no, an object can have multiple constructors with different parameters. 解决方案三

Socket类中提供的支持异步操作的方法

在网络编程中运用Socket,常常需要长期监听某个端口,以获得Socket连接,进而执行相关操作. 但此时,主线程就会被阻塞,无法做其他事情.为了解决这类问题,Socket类中提供了一些支持异步操作的方法,如表17-10所示. 表17-10 Socket类中支持异步操作的方法 方法 说明 BeginAccept() 开始一个异步请求,以创建一个新的Socket对象来接受传入的连接请求 EndAccept() 结束一个异步请求,以创建一个新的Socket对象来接受传入的连接请求 BeginConn

javaweb-求助啊,怎么实现一个frameset中两个jsp间的数据传输呢?

问题描述 求助啊,怎么实现一个frameset中两个jsp间的数据传输呢? 其中一个jsp提交form表单,另外一个jsp获取到提交过来的数据 解决方案 表单提交到另外一个jsp页面用request对象获取不就行了?和frameset有什么关系? 如果不想提交,另外一个frame获取某个frame里面输入的数据,使用parent.getElementById('frameID').contentWindow.documemt.getElementById获取frame中的控件 解决方案二: ??

c# com组件-求助c#写com组件有毒 看了无数文章也无法公开一个类中的函数

问题描述 求助c#写com组件有毒 看了无数文章也无法公开一个类中的函数 看了无数文章和博客尝试了无数方法依然无法解决这个问题 编译的com组件永远只有 _object 下的的几个函数自定义的函数一个也没有 下面是看着无数文章写的代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Run

spring框架,有些类中没有无参构造放方法,但是spring还是可以构造出该实例,它是怎么做到的?

问题描述 spring框架,有些类中没有无参构造放方法,但是spring还是可以构造出该实例,它是怎么做到的? spring的基础是反射,反射是依靠无参构造方法的,但是我的类中没有无参构造放方法,Spring还是给我构造出了实例,Spring是怎么做到的? 解决方案 反射也可以调用有参构造函数甚至私有构造函数的. 没有无参构造函数,你说的是没有写构造函数吧,那么java会产生一个默认的无参数共有构造函数的. 解决方案二: 不写构造器的话,java会默认生成一个无参构造器.写了的话,就不会生成了.

spinner-从另外一个类中访问Spinner

问题描述 从另外一个类中访问Spinner 我在onCreate函数中创建了一个spinner. Spinner spinner = (Spinner) findViewById(R.id.spinner1); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this R.array.weight_array android.R.layout.simple_spinner_item); adapter.