數組對象的反序列化解析


在前幾篇使用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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章