Autobean returns 使用 as() 后的 autobean
Autobean returns an autobean after using as()
在我的 gwt 项目中,我使用 gwt 通道 api 向客户端发送对象,并使用 Autobean 对这些对象进行编码和解码。一切正常,我在客户端收到一个有效的 json 字符串,并且可以将该 json 字符串再次解码回 AutoBean。只有 autobean.as() 与 autobean 本身没有 return 任何不同。
IContactDto 和 ContactDto 只包含 getter 和 setter。这是我写的工厂
AutoBeanFactory
public interface DtoFactory extends AutoBeanFactory{
AutoBean<IContactDto> contactDto(IContactDto contactDto);
}
服务器端代码
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 字符串的代码
// 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_g$
我实际上可以使用这个对象的 getter 和 setter,但是一旦我尝试继续使用这些对象,我就会遇到类型签名问题。
有什么想法可以让我再次编码的对象吗?
AutoBean#as()
returns “T 接口的代理实现,它将委托给底层包装对象,如果有的话。”(来源:javadoc),它永远不会 return 包装对象本身。
另外,从JSON反序列化时,没有wrapped object,创建了一个新的autobean "from scratch",然后用JSON填充(其实是直接wraps 来自已解析的 JSON 的 Splittable
:超轻量级,只是一个 JS 对象的薄类型安全包装器——或者当不在浏览器中时是 org.json.JSONObject
。)
在我的 gwt 项目中,我使用 gwt 通道 api 向客户端发送对象,并使用 Autobean 对这些对象进行编码和解码。一切正常,我在客户端收到一个有效的 json 字符串,并且可以将该 json 字符串再次解码回 AutoBean。只有 autobean.as() 与 autobean 本身没有 return 任何不同。
IContactDto 和 ContactDto 只包含 getter 和 setter。这是我写的工厂
AutoBeanFactory
public interface DtoFactory extends AutoBeanFactory{
AutoBean<IContactDto> contactDto(IContactDto contactDto);
}
服务器端代码
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 字符串的代码
// 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_g$
我实际上可以使用这个对象的 getter 和 setter,但是一旦我尝试继续使用这些对象,我就会遇到类型签名问题。
有什么想法可以让我再次编码的对象吗?
AutoBean#as()
returns “T 接口的代理实现,它将委托给底层包装对象,如果有的话。”(来源:javadoc),它永远不会 return 包装对象本身。
另外,从JSON反序列化时,没有wrapped object,创建了一个新的autobean "from scratch",然后用JSON填充(其实是直接wraps 来自已解析的 JSON 的 Splittable
:超轻量级,只是一个 JS 对象的薄类型安全包装器——或者当不在浏览器中时是 org.json.JSONObject
。)