StackOverflowError การทำให้วัตถุเป็นอนุกรมใน java (Android 4.4) [ซ้ำกัน]

แอพ Android ของฉันต้องทำให้วัตถุเป็นอนุกรม (RowCreation) เพื่อส่งผ่านเครือข่าย เห็นได้ชัดว่าคลาสอ็อบเจ็กต์ใช้อินเทอร์เฟซแบบอนุกรม ชั้นเรียนมีโครงสร้างดังต่อไปนี้:

    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;


}

มันเกิดขึ้นที่ผู้ใช้แอปรายหนึ่งรายงานข้อผิดพลาดในวันนี้ เมื่อฉันเห็น stacktrace บนคอนโซล Google Play คือ 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)

person m_junior    schedule 25.08.2015    source แหล่งที่มา
comment
คุณกำลังเห็น Hashtable.writeObject ในการติดตามสแต็ก บางทีคุณอาจเอาสิ่งของมากเกินไป ความเป็นไปได้อย่างหนึ่งอาจเป็นคลาสที่ไม่คงที่ภายใน หรือโครงสร้างข้อมูลแบบเรียกซ้ำบ้าง   -  person Joop Eggen    schedule 25.08.2015
comment
คุณต้องการให้ฉันทำอะไรกันแน่?   -  person m_junior    schedule 25.08.2015