数组对象的反序列化解析


在前几篇使用mina实现rpc调用时,会存在方法中要求返回类型是数组的情况,
如定义一个方法,

  1. public Properties[] getProps();
但是当Method.invoke()方法执行完成后返回的是Object类型,这个Object将被序列化后传送到客户端,由客户端进行解析。
假设Object中的内容为:

  1.     public Properties[] getProps() {
  2.         
  3.         Properties[] parray = new Properties[3];
  4.         
  5.         parray[0] = new Properties();
  6.         parray[0].put("444","234234");
  7.         parray[0].put("vvvv",new Vector());
  8.         parray[0].put("aaaaa",new Apple());
  9.         
  10.         parray[1] = new Properties();
  11.         parray[1].put("asdfasdf","234234");
  12.         parray[1].put("vvaddfasdvv",new Vector());
  13.         parray[1].put("aaadfadsfaaa",new Apple());
  14.         
  15.         parray[2] = new Properties();
  16.         parray[2].put("asdfaadsfasdfasfsdf","234234");
  17.         parray[2].put("vvaddfasdfasdfasfdasdvv",new Vector());
  18.         parray[2].put("aaadfaasdfafdasdfasfdfddsfaaa",new Apple());
  19.         return parray;
  20.         
  21.     }
在客户端上,通过开关控制异步的方式转为同步应用,最终客户端可以获得一个Object,这个对像就是一个数组对象,
获得对象后要需要利用反射还原为数组结构。
  1. if(handler.resultObject!=null){           
  2.     Object obj = handler.resultObject;
  3.     if (obj.getClass().isArray()) {
  4.         System.out.println("it is a array."+Array.getLength(obj));
  5.         System.out.println("type="+obj.getClass().getComponentType());
  6.         Properties[] props = new Properties[Array.getLength(obj)];
  7.         for(int i=0;i<Array.getLength(obj);i++){
  8.             props[i] = (Properties) Array.get(obj,i);
  9.             System.out.println(i+"===="+props[i]);
  10.         }
  11.     }
  12. }
经上代码处理后,返回结果resultObject将会转化为Properties数组。

输出:
  1. it is a array.3
  2. type=class java.util.Properties
  3. 0===={vvvv=[], 444=234234, aaaaa=mina.common.Apple@26e431}
  4. 1===={vvaddfasdvv=[], asdfasdf=234234, aaadfadsfaaa=mina.common.Apple@14f8dab}
  5. 2===={vvaddfasdfasdfasfdasdvv=[], aaadfaasdfafdasdfasfdfddsfaaa=mina.common.Apple@1ddebc3, asdfaadsfasdfasfsdf=234234}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值