GWT AutoBean - 不序列化 ArrayList<String>,其他 pojos 好吗?

GWT AutoBean - not serializing ArrayList<String>, other pojos ok?

我无法使用 AutoBean 机制获取要序列化的 ArrayList。我正在使用 GWT 2.7。这是我的设置:

public interface IUser {
    String getName();
    void setName(String name);

    ArrayList<String> getFriends();
    void setFriends(ArrayList<String> friends);
}

public class User implements IUser {
    private String name;
    private ArrayList<String> friends;

    ... getters and setters for all members attributes ...
}

然后我的豆厂:

public interface AutoBeanFactoryImpl extends AutoBeanFactory {
    AutoBean<IUser> user(IUser inst);
}

最后是我的用法:

ArrayList<String> friends = new ArrayList<String>();
friends.add("Mary");

User user = new User();
user.setName("Fritz");
user.setFriends(friends);

AutoBeanFactoryImpl factory = GWT.create(AutoBeanFactoryImpl.class);
AutoBean<IUser> bean = factory.user(user);
String json = AutoBeanCodex.encode(bean).getPayload();

输出json没有朋友数组。它的名字还可以。为什么字符串数组没有序列化?我需要一些特别的东西吗?

谢谢

问题是您指定了 ArrayList 而不是简单的 List - 为了很好地生成代码来填补 Java 和 JSON 之间的空白, autobeans 只想使用接口。除了 getters 和 setters 之外,AutoBeans 还特别支持 ListSet(这只是一个 List,在 JSON), 和 Map。如果您指定特定的实现,AutoBean 工具无法始终处理它。

随意传入一个 ArrayList 实例,但声明你的 getter 和 setter 为 List.

类型

顺便说一句,这些集合可以是 AutoBeans 可以处理的任何类型 - 包括数字、布尔值、字符串、日期和任何其他也符合 AutoBeans 可以处理的类似 bean 的接口。