测试代码
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}
}