数组对象的反序列化解析


在前几篇使用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}


发布了74 篇原创文章 · 获赞 10 · 访问量 56万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章