没有setter方法的GWT Autobean

时间:2013-02-27 10:56:27

标签: json gwt autobean

我正在使用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方法的情况下进行编码/解码?

1 个答案:

答案 0 :(得分:2)

AutoBean管理所有getter和setter,只管理getter和setter。对于任何其他方法,您必须使用category

使用某个类别,您可以addId(…)实施getIds().add(…),或者如果addIds the underlying object可能直接致电is a wrapper AutoBean