首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用POJO类而不是接口的GWT AutoBean

使用POJO类而不是接口的GWT AutoBean
EN

Stack Overflow用户
提问于 2011-06-07 15:03:44
回答 2查看 6.2K关注 0票数 16

我希望有人能为我的问题提出一个简单的解决方案。

我有一个POJO,说:

代码语言:javascript
复制
public class Person
{
    private String name;
    public String getName(){ return name; }
    public void setName(String name){ this.name = name; }
}

我想使用GWT的AutoBean功能将这个bean序列化/反序列化为JSON,但是AutoBean需要一个接口:

代码语言:javascript
复制
public interface Person
{
    public String getName();
    public void setName(String name);
}

我有一个AutoBeanFactory设置:

代码语言:javascript
复制
public interface PersonFactory extends AutoBeanFactory
{
    AutoBean<Person> person();
}

使用工厂和Person界面,我能够反序列化一个JSON Person:

代码语言:javascript
复制
PersonFactory personFactory = GWT.create(PersonFactory.class);
AutoBean<Person> autoBeanPerson = AutoBeanCodex.decode(personFactory, Person.class, jsonObject.toString());
Person person = autoBeanPerson.as();

但是,如果我用Person类替换Person接口,我会收到一个AutoBeanFactoryGenerator异常,声明:"com.xxx.xxx.Person不是一个接口“。

如何在我的简单POJO中使用AutoBean序列化/反序列化?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-07 17:15:03

AutoBean生成接口的轻量级、优化的实现;它显然不能为类做这件事。这是设计好的。

票数 10
EN

Stack Overflow用户

发布于 2012-03-28 07:37:10

如果它是一个简单的POJO,并且没有其他autobean类型的属性,那么这是可能的:

1)制作PersonPojo implements Person

2)在工厂中添加包装器方法:

代码语言:javascript
复制
public interface PersonFactory extends AutoBeanFactory {
    AutoBean<Person> person( Person p ); // wrap existing
}

3)创建包装好的AutoBean,并使用AutoBeanCodex.encode序列化到JSON

代码语言:javascript
复制
PersonPojo myPersonPojo = new PersonPojo("joe");
AutoBean<Person> autoBeanPerson = personFactory.person( myPersonPojo );
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6261682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档