当子类是私有时使用@ExtraTypes注释

时间:2013-10-08 16:09:31

标签: gwt

我从Twitter4J为Status类实现了一个代理客户端类。我在运行时遇到以下错误:

  

无法发送域类型twitter4j.internal.json.StatusJSONImpl   给客户

这是因为我为抽象类Status类而不是StatusJSONImpl创建了一个代理。我看到我应该使用@ExtraTypes注释,但是类StatusJSONImpl是私有的,我无法从包外引用它。我怎么解决这个问题?是否有可能打开多态而不告诉特定的类?

1 个答案:

答案 0 :(得分:1)

@ExtraTypes用于引用RequestContext方法的图形及其参数和返回类型不直接引用的代理类型,递归。例如。方法返回BaseProxy,其中有两个从不在任何地方引用的子接口FooProxyBarProxy。如果没有@ExtraTypes({ FooProxy.class, BarProxy.class }),RequestFactory生成器将不会跨越它们的路径,因此不会将它们包含在客户端反序列化代码中,因此该方法永远不会返回实现FooProxy或{{ 1}}。

在您的情况下,您似乎不需要BarProxy,只需要一个@ExtraTypes即可在其Locator<Status,Void>方法中创建StatusJSONImpl对象(您如果它是create,则不需要实现任何其他方法,只需抛出异常或返回null)