我正在使用Autobean框架在我的GWT应用程序中编码/解码JSON。它适用于具有getter和setter的接口的情况。但有没有办法以其他方式执行此操作而不使用setThisCollectionProperty
方法指定addToThisCollectionProperty
?
例如,我有一个这样的接口IPerson
:
public interface IPerson {
public String getName();
public void setName(String name);
public int getAge();
public void setAge(int age);
public List<String> getIds();
public void addId(String id);
}
BeanFactory是这样的:
public interface BeanFactory extends AutoBeanFactory {
public AutoBean<IPerson> person();
public AutoBean<IPerson> person(IPerson person);
}
和实现IPerson的Person类,
public class Person implements IPerson {
private String name;
private List<String> ids;
...
public List<String> getIds() {
return ids;
}
public void addId(String id) {
...
ids.add(id);
}
}
如果addId(String id)
替换为setIds(List<String> ids)
,则有效。
否则会显示以下错误:
com.mycompany.jsonsample.beans.IPerson参数化并不简单,但person方法不提供委托
是否可以在没有set
方法的情况下进行编码/解码?
答案 0 :(得分:2)
AutoBean管理所有getter和setter,只管理getter和setter。对于任何其他方法,您必须使用category。
使用某个类别,您可以addId(…)
实施getIds().add(…)
,或者如果addIds
the underlying object可能直接致电is a wrapper AutoBean