请问在java中 
前台每次只一个类对象到HashMap中,然后map对象做为参数调用到后台方法。如下 :
HashMap map = new HashMap();
 UserVO uvo = new UserVO();
 map.put(uvo , uvo); UIsVO uivo = new UIsVO();
 map.put(uivo, uivo);
 
 AmountVO avo = new AmountVO();
 map.put(avo, avo);
 
 InvoiceVO ivo = new InvoiceVO();
 map.put(ivo, ivo);
 ......还有很多VO对象,
 
 Service.operator(map);请问在后台能前到前台放进来的对象吗
 
怎么现实?高手请解释一下?
 

解决方案 »

  1.   

    把你要对象放到session或者request里面,然后在后台再取,不可以吗?
      

  2.   

    答:比如,
    前台用:session.setAttribute("MyData",map); 放入
    后台用:map=(HashMap)session.getAttribute("MyData"); 取出
      

  3.   

    晕!
    我要的是得到某个对象
    如:前台放进来的是
    AmountVO avo = new AmountVO();
    map.put(avo, avo); 但后台是不知道它的类型 是 AmountVO
    但想得到 AmountVO 类型 
    就不管前台放进来的是什么类型对象
    我在后台想得它的类型?
      

  4.   

    答:不管前台放进来的是什么类型对象 
    我在后台想得它的类型?
    那简单:设放进来是对象o,则后台用:o.getClass()得到的就是该对象的真正的类型.
      

  5.   


    答:不管前台放进来的是什么类型对象
    我在后台想得它的类型?
    那简单:设放进来是对象o,则后台用:o.getClass()得到的就是该对象的真正的类型.
    这样在可以取得到 原来对象的属性吗?
    怎么搞?
      

  6.   

    答:我有一点想法仅供楼主参考:
    能否这样:设放进来是对象o,则:
    if( o instanceof UserVO )
    {
     UserVO uo=(UserVO)o; 
    ....

     else   if( o instanceof UIsVO )
    {
     UIsVO uo=(UIsVO)o; 
    ....
    } else   if( o instanceof AmountVO )
    {
     AmountVO uo=(AmountVO)o; 
    ....

    等等....
      

  7.   

    答:这个我要好好想想.因为:随时可加入新的不同类的VO的对象(属性与方法可能都不同---即:这些VO类的对象之间没有共性),如何来:动态得到这些不种类的VO对象并调用其中的方法(名称,参数可能都不同.)
    反射技术似乎还不能完全解决这个问题.我得想想....
      

  8.   

    第一:将一个Map对象放入Session,是效率非常低得表现
    第二:既然你要得到AmountVO,或者可以用范型 HashMap<AmountVO> map;
    第三: 一个HashMap要放不同种类的那么多对象,如果这些对象毫不相干(类之间没有关系),那么这样是不好的,应该将这些类,抽取出父类或者接口,然后用这个父类作为范型参数,那么就不用判断什么类型了!!
      

  9.   

    答:我想一个想法,仅供楼主参考(采用类似struts方案中的ACTION设计方法)
    1)每一个不同的VO对象(其类的定义肯定是不同的),都相应设计一个对应于该VO对象的ACTION类(即:每一个VO类,相应设计一个VOACTION类,在该VOACTION类的方法如:execute(VO voobject)中,用于填写针对该VO类的对象在后台进行处理的逻辑代码)
    2)设计一个config.xml文件,在该配置文件中,写上每一个VO类所对应的VOACTION类(即:两者之间的映射关系)
    好处是:以后再增加新的VO类只要在该.xml文件中增加一行文本就行了(不用再修改程序代码)
    3)上述的映射关系其实在程序启动时已读入一个ACTION_HASHMAP中.
    4)这样在后台的代码就异常简单了:
    以任何VO对象o,从ACTION_HASHMAP.get(o.getClass())中取出对应于该对象的ACTION对象:action_o,直接调用:
    action_o.execute(o);就行了.
    而且:再加入新的VO对象,后台代码不用修改代码(因为:只要修改一下:增加新的VO类只要在该.xml文件中增加一行文本就行了)以上仅供楼主参考
      

  10.   

    答:设计的目的是:
    尽可能不要出现:
    if( o instanceof UserVO ) 

    UserVO uo=(UserVO)o; 
    .... 

    else  if( o instanceof UIsVO ) 

    UIsVO uo=(UIsVO)o; 
    .... 
    }
    这种形式的代码(开中药铺式),否则:每增加一个新VO种类该if()就加上一条语句(这不好).
    但这些VO对象之间又没有共性(否则:采用实现共同接口+方法重写的多态 就行了)由于:这些VO对象是很不相同的,因而:设计了17楼的这个方案,仅供楼主参考.
      

  11.   

    你可以用反射,查看一下java.lang.reflect包里面的类,你应该有所得