java flash tcp字節流通信(一)-java 協議(6)

測試代碼

package com.net.test;

public class TestObject {
 private String name;
 private Long value;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Long getValue() {
  return value;
 }
 public void setValue(Long value) {
  this.value = value;
 }
 
}

package com.net.test;

import java.util.List;
import java.util.Map;

import com.net.tcp.DataPack;
import com.net.tcp.DataType;
import com.net.tcp.StreamObject;

public class TestVO implements StreamObject {

 private byte b;
 private short s;
 private int i;
 private long l;
 private double d;
 private boolean bool;
 private String str;
 private TestVO so;
 private List<TestVO> list;
 private Map<String, Object> map;
 private Object o;
 public void decode(DataPack pack){
  b = ((Number)pack.getObject()).byteValue();
  s = ((Number)pack.getObject()).shortValue();
  i = ((Number)pack.getObject()).intValue();
  l = ((Number)pack.getObject()).longValue();
  d = ((Number)pack.getObject()).doubleValue();
  bool = (Boolean)pack.getObject();
  str = (String)pack.getObject();
  so = (TestVO)pack.getObject();
  list = (List)pack.getObject();
  map = (Map)pack.getObject();
  o = (Object)pack.getObject();
 }
 public void encode(DataPack pack) {
  pack.putObject(b, DataType.TYPE_BYTE);
  pack.putObject(s, DataType.TYPE_SHORT);
  pack.putObject(i, DataType.TYPE_INT);
  pack.putObject(l, DataType.TYPE_DOUBLE);
  pack.putObject(d, DataType.TYPE_DOUBLE);
  pack.putObject(bool, DataType.TYPE_BOOL);
  pack.putObject(str, DataType.TYPE_STRING);
  pack.putObject(so, DataType.TYPE_OBJECT);
  pack.putObject(list, DataType.TYPE_ARRAY, DataType.TYPE_OBJECT);
  pack.putObject(map, DataType.TYPE_MAP);
  pack.putObject(o, DataType.TYPE_OBJECT);
 }
 public byte getB() {
  return b;
 }
 public void setB(byte b) {
  this.b = b;
 }
 public short getS() {
  return s;
 }
 public void setS(short s) {
  this.s = s;
 }
 public int getI() {
  return i;
 }
 public void setI(int i) {
  this.i = i;
 }
 public long getL() {
  return l;
 }
 public void setL(long l) {
  this.l = l;
 }
 public double getD() {
  return d;
 }
 public void setD(double d) {
  this.d = d;
 }
 public boolean isBool() {
  return bool;
 }
 public void setBool(boolean bool) {
  this.bool = bool;
 }
 public String getStr() {
  return str;
 }
 public void setStr(String str) {
  this.str = str;
 }
 public TestVO getSo() {
  return so;
 }
 public void setSo(TestVO so) {
  this.so = so;
 }
 public List<TestVO> getList() {
  return list;
 }
 public void setList(List<TestVO> list) {
  this.list = list;
 }
 public Map<String, Object> getMap() {
  return map;
 }
 public void setMap(Map<String, Object> map) {
  this.map = map;
 }
 public Object getO() {
  return o;
 }
 public void setO(Object o) {
  this.o = o;
 }
 

}

package com.net.test;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import com.net.tcp.DataPack;
import com.net.tcp.DataType;
import com.net.tcp.StreamObjectManager;

public class MainTest {
 public static String toString(Object value) throws Exception{
  return getModel(value, 0);
 }
 private static String getModel(Object value, int tabN)throws Exception{
  Field[] fields = value.getClass().getDeclaredFields();
  Field field = null;
  StringBuffer sb = new StringBuffer();
  String tab = "";
  for(int i = 0; i < tabN; i++){
   tab = "\t";
  }
  sb.append(tab);
  sb.append("{\n");
  for(int i = 0; i < fields.length; i++){
   field = fields[i];
   field.setAccessible(true);
   sb.append("\t").append(tab);
   sb.append(field.getName())
   .append(":")
   .append(field.get(value));
   if(i + 1 < fields.length)
    sb.append(",");
   sb.append("\n");
  }
  sb.append(tab);
  sb.append("}");
  return sb.toString();
 }
 public static void main(String args[]) throws Exception{
  StreamObjectManager.init("com.net.test.*");
  TestVO vo = new TestVO();
  vo.setB((byte)4);
  vo.setL(343434l);
  vo.setD(0.569d);
  vo.setStr("鄭創");
  vo.setBool(true);
  TestVO so = new TestVO();
  so.setS((short)121);
  vo.setSo(so);
  List<TestVO> list = new ArrayList<TestVO>();
  list.add(so);
  vo.setList(list);
  TestObject object = new TestObject();
  object.setName("埒");
  vo.setO(object);
  DataPack pack = new DataPack();
  pack.putObject(vo, DataType.TYPE_OBJECT);
  pack.filp();
  TestVO vo1 = (TestVO)pack.getObject();
  System.out.println(MainTest.toString(vo1));
 }
}

測試結果:

{
 b:4,
 s:0,
 i:0,
 l:343434,
 d:0.569,
 bool:true,
 str:鄭創,
 so:com.net.test.TestVO@a62fc3,
 list:[com.net.test.TestVO@89ae9e],
 map:null,
 o:{name=埒, value=null}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章