我从Twitter4J为Status
类实现了一个代理客户端类。我在运行时遇到以下错误:
无法发送域类型twitter4j.internal.json.StatusJSONImpl 给客户
这是因为我为抽象类Status
类而不是StatusJSONImpl
创建了一个代理。我看到我应该使用@ExtraTypes注释,但是类StatusJSONImpl
是私有的,我无法从包外引用它。我怎么解决这个问题?是否有可能打开多态而不告诉特定的类?
答案 0 :(得分:1)
@ExtraTypes
用于引用RequestContext
方法的图形及其参数和返回类型不直接引用的代理类型,递归。例如。方法返回BaseProxy
,其中有两个从不在任何地方引用的子接口FooProxy
和BarProxy
。如果没有@ExtraTypes({ FooProxy.class, BarProxy.class })
,RequestFactory生成器将不会跨越它们的路径,因此不会将它们包含在客户端反序列化代码中,因此该方法永远不会返回实现FooProxy
或{{ 1}}。
在您的情况下,您似乎不需要BarProxy
,只需要一个@ExtraTypes
即可在其Locator<Status,Void>
方法中创建StatusJSONImpl
对象(您如果它是create
,则不需要实现任何其他方法,只需抛出异常或返回null)