2

我在 Android 上的序列化有问题。服务器是用 Java 编写的。它将 DataContainer 对象与对象的 ArrayList 序列化。在这种情况下,包含 Category 对象的 ArrayList 的 Menu 对象并将其发送到 Android 设备。当我反序列化它时,它可以工作,但 ArrayList 类别大小为 0。当我使用用普通 Java 编写的客户端时,它工作得很好。每个类都实现了可序列化,服务器和 Android 应用程序使用相同的包(也可以对另一个对象进行序列化和反序列化)。任何想法我做错了什么?

以下是代码片段:

菜单:

public class Menu implements Serializable { 
    public ArrayList<Category> categories = new ArrayList<Category>();
}

类别:

public class Category implements Serializable {
    Integer category_id;
    String name;
   public ArrayList<Product> products;  
}

Product 类中的等等(我删除了 setter 和 getter)。

反序列化代码:

 o = server.readObject();
 dc = (DataContainer) o;
 while(!dc.data.isEmpty()) {

           o = dc.data.remove(0);           
           if(o instanceof Menu) {
           if(mds.saveMenu((Menu) o))
           m = (Menu) o;
           Log.i("Synchronizacja", "Zapisano menu " + m.getCategories().size()); // This line says that categories.size() is 0
  }

桌面 Java 反序列化代码:

public void manageInput(Object o){
    DataContainer dc = (DataContainer) o;
    Menu m = (Menu) dc.data.get(0);
    System.out.println(m.categories.size()); // This line returns a non-zero value
}
4

0 回答 0