序列化 – 当我使用ArrayList时,如何保持GWT试图包含每个可序列化的类

前端之家收集整理的这篇文章主要介绍了序列化 – 当我使用ArrayList时,如何保持GWT试图包含每个可序列化的类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在GWT中有一个需要返回列表的RPC服务.列表可以填充各种类型的对象,所有这些对象都是可序列化的,并且所有对象都在我的服务中引用,因此它们应该可用于GWT RPC.但是,除非我使用通用类型参数(例如ArrayList< String>),否则GWT会给出警告:
Return type: java.util.ArrayList
    java.util.ArrayList
      Verifying instantiability
         java.util.ArrayList
            [WARN] Checking all subtypes of Object which qualify for serialization`
Adding '465' new generated units

基本上,我只想要一种声明List或ArrayList而不使用GWT的方法,试图为类路径上的每个可序列化对象生成代码.没有办法告诉GWT我知道我在做什么,不要疯了吗?

解决方法

让我谈谈David Nouls所说的话. GWT编译器无法读取您的头脑,所以当您无法指定返回类型可以是什么,GWT假定它可以是任何东西,并且必须做额外的工作,以确保可以发生在Javascript客户端.

你真的应该指定能够返回哪些类型.只有这样做是有利的,因为编译器将生成更优化的代码,而不是生成代码来处理“465个处理单元”,因此您的下载速度将更快.

我建议创建一个名为“BaseResult”的空接口,然后让您返回的对象都实现该接口.

/**
 * Marker interface 
 */
public interface BaseResult {
}

然后你指定你的rpc方法的返回类型是ArrayList:

public interface MyRpcService extends RemoteService {
  public ArrayList<BaseResult> doRpc();
}

然后确保您的返回对象都实现该接口.

public class UserInfo implements BaseResult {}
public class Order implements BaseResult {}

现在,GWT编译器将为您的代码更容易的优化时间.

原文链接:https://www.f2er.com/java/125086.html

猜你在找的Java相关文章