当前位置:  开发笔记 > 编程语言 > 正文

当我使用ArrayList时,如何防止GWT尝试包含每个可序列化的类

如何解决《当我使用ArrayList时,如何防止GWT尝试包含每个可序列化的类》经验,为你挑选了1个好方法。

我在GWT中有一个需要返回List的RPC服务.List可以填充各种类型的对象,所有对象都是可序列化的,并且所有对象都在我的服务的其他地方引用,因此它们应该可供GWT RPC使用.但是,除非我添加泛型类型参数(例如ArrayList),否则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我知道我在做什么而不是发疯?



1> filsa..:

让我来看看David Nouls所说的话.GWT编译器无法读懂您的想法,因此当您未能指定返回类型的内容时,GWT会假定它可以是任何内容,并且必须做额外的工作以确保可以在Javascript客户端进行.

你真的应该指定哪些类型可以返回.只有上升空间,这样做 - 因为编译器会产生更优化的代码,而不是生成的代码来处理"465个genreated单位",所以你的下载速度会更快.

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

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

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

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

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

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

现在,GWT编译器可以更轻松地优化代码.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有