我在 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
}