首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用as()之后,Autobean返回一个autobean

在使用as()之后,Autobean返回一个autobean
EN

Stack Overflow用户
提问于 2016-10-08 08:20:27
回答 1查看 283关注 0票数 0

在我的gwt项目中,我用gwt通道api向客户端发送对象,并使用Autobean对这些对象进行编码和解码。一切正常,我在客户机上接收到一个有效的json字符串,并可以再次将该json字符串解码回AutoBean。只有autobean.as()才不会返回与autobean本身不同的内容。

IContactDto和ContactDto只包含getter和setter。这就是我写的

AutoBeanFactory

代码语言:javascript
复制
public interface DtoFactory extends AutoBeanFactory{
    AutoBean<IContactDto> contactDto(IContactDto contactDto);      
}

服务器端代码

代码语言:javascript
复制
DtoFactory dtoFactory = AutoBeanFactorySource.create(DtoFactory.class);
AutoBean<IContactDto> iContactDto = dtoFactory.contactDto(contactDto);
String sJson = AutoBeanCodex.encode(autoBean).getPayload();
// sending this json to the client

客户端代码

这是我用来解码有效json字符串的代码。

代码语言:javascript
复制
// sJson string looks like {"id":"6473924464345088", "lastUpdate":"1475914369346", "fullName":"testName1","givenName":"testName2"}

DtoFactory factory = GWT.create(DtoFactory.class);
AutoBean<IContactDto> autoBean = AutoBeanCodex.decode(factory, IContactDto.class, sJson);  // debugger: IContactDtoAutoBean_1_g$             
IContactDto iDto = autoBean.as(); // debugger still shows IContactDtoAutoBean$1_1_g$

实际上,我可以使用这个对象的getter和setter,但是一旦我尝试继续使用这些对象,类型签名就会出现问题。

有什么好办法让我重新编码的对象吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 08:59:52

AutoBean#as()返回一个“T接口的代理实现,它将委托给底层包装对象(如果有的话)”。(源:javadoc,它将永远不会返回包装的对象本身。

此外,当从JSON反序列化时,没有包装的对象,“从头开始”创建了一个新的autobean,然后用JSON填充(它实际上直接包装了解析的JSON中的Splittable:超级轻量级,只是JS对象的瘦类型包装器-or org.json.JSONObject,而不是浏览器中的org.json.JSONObject)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39930270

复制
相关文章

相似问题

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