Aplikasi Android saya perlu membuat serialisasi suatu objek (RowCreation) untuk mengirimkannya melalui jaringan. Jelasnya kelas objek mengimplementasikan antarmuka Serializable. Kelas memiliki struktur berikut:
public class RowCreation extends ClientSyncRequest {
private static final long serialVersionUID = 10001243L;
public int localID;
public int entity;
public Hashtable attributes = new Hashtable();
public byte[] bytes;
public long time = 0;
public String md5CheckSum;
}
public class ClientSyncRequest extends SyncMessage {
private static final long serialVersionUID = 10001246L;
public int id = 0;
public int getId(){
return this.id;
}
}
public class SyncMessage implements Serializable{
private static final long serialVersionUID = 10001231L;
}
Kebetulan salah satu pengguna aplikasi melaporkan bug hari ini, Ketika saya melihat stacktrace di konsol google play adalah StackOverflowError:
java.lang.StackOverflowError
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1064)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1035)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:248)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1067)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1035)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:248)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1067)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1574)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
at java.util.Hashtable.writeObject(Hashtable.java:1079)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1053)
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)