我試圖代碼在這裏(Java Serializable Object to Byte Array),也SerializationUtils.serialize(),但是當我序列化一個對象,我總是得到更多的字節,然後存儲在對象的字節數。Java:如何使用盡可能少的輸出字節將對象序列化爲字節數組?
例如,當我做SerializationUtils.serialize(新字節[1]),我可以得到與長度28輸出的字節數組而輸入對象具有1個字節。同樣,如果我有一個像
public class MyClass {
public byte[] a;
public MyClass(byte[] a) {
this.a = a;
}
}
A類和我創建一個對象
MyClass obj = new MyClass(new byte[1]);
當我做SerializationUtils.serialize(OBJ),我會得到一個輸出字節數組大於1
更長我真正在做我的計劃是,我要送兩方間的對象數組,所以我想先序列化這個對象數組到一個單一的字節數組,然後將其發送。但是SerializationUtils.serialize(MyClass [] obj)將會輸出一個數組,比字節obj實際存儲的字節多得多,這增加了我的通信帶寬。
我還試圖通過執行存儲複印創建從對象自己的陣列的單個字節數組:
MyClass[] obj = new MyClass[5];
for (int i=0; i<5; i++)
obj[i] = new MyClass(new byte[1]);
byte[] msg = new byte[5];
for (int i=0; i<obj.length; i++)
System.arraycopy(obj[i].a, 0, msg, i, 1);
但這似乎並不是一樣有效SerializationUtils.serialize(MyClass的[] OBJ )甚至通過SerializationUtils.serialize(MyClass [] obj)將會產生比我擁有的msg更多的字節。
所以是有一些方法在Java中,我可以有效地序列對象的對象/陣列,並具有輸出字節數組是儘可能短?
在此先感謝。