在RPC调用之间传递对象时,在RPC接口中声明具体参数类型的一种很好的做法。如果由于某种原因您不能在RPC接口中使用具体的类,请尝试尽可能具体。
这是因为GWT编译器在发出Javascript时必须考虑编译单元中List的所有可能变体。这包括在类路径中扩展List和Serializable接口的所有类。排列可能很大,这将影响您的编译时间以及应用程序下载大小。
所以最好的方法是将您的接口定义为
public ArrayList<YourType> myMethod(TransactionCall call) {...}而不是
public List<Serializable> myMethod(TransactionCall call) {...}这样,编译器只需要为ArrayList和YourType扩展生成编译单元。这样做的好处是可以缩短编译时间,并缩小Javascript编译文件的数量,从而可以更快地下载应用程序。
如果必须在RPC调用中返回各种不相关的对象,请尝试创建包装器类,并使用包装的返回值返回包装器类的对象。在RPC方法定义中使用包装器类。抵制将包装的字段声明为Object或Serializable的冲动,您将否定使用包装器获得的所有序列化好处。相反,您可以为希望通过RPC调用返回的每种具体类型定义一个Wrapper接口和一小组Wrapper实现。



