StackOverflowError, сериализующий объект в java (Android 4.4)

Мое приложение для Android должно сериализовать объект (RowCreation), чтобы передать его по сети. Очевидно, что класс объекта реализует интерфейс Serializable. Класс имеет следующую структуру:

    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;


}

Бывает, что сегодня один из пользователей приложения сообщил об ошибке. Когда я увидел трассировку стека на консоли 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