GWT客户端代码中的Collections.sort是否会导致JavaScript膨胀?
我们已经采取措施确保在GWT客户机代码中使用List的具体实现,以避免生成过多的JavaScript。(注意:我知道我们可以改为黑名单类型。)GWT客户端代码中的Collections.sort是否会导致JavaScript膨胀?,java,gwt,arraylist,Java,Gwt,Arraylist,我们已经采取措施确保在GWT客户机代码中使用List的具体实现,以避免生成过多的JavaScript。(注意:我知道我们可以改为黑名单类型。) 如果我们在客户端使用Collections.sort,这会导致同样的膨胀吗?或者它会认识到我们只将其用于ArrayList并相应地生成代码吗?使用ArrayList而不是List仅在引用那些可序列化的RPC类型时防止膨胀。要实现这一点,请避免在任何RPC接口的参数或返回类型中,或在您定义的任何可序列化类的字段中列出List 在其他任何地方执行此操作(包括
如果我们在客户端使用Collections.sort,这会导致同样的膨胀吗?或者它会认识到我们只将其用于ArrayList并相应地生成代码吗?使用
ArrayList
而不是List
仅在引用那些可序列化的RPC类型时防止膨胀。要实现这一点,请避免在任何RPC接口的参数或返回类型中,或在您定义的任何可序列化类的字段中列出List
在其他任何地方执行此操作(包括在传递到诸如Collections.sort
之类的util方法时)都是不必要的-编译器实际上足够聪明,可以在编译时解决这些情况并简化代码
产生这种差异的原因非常简单——让我们把编译器看作三个基本步骤
- 首先,我们生成我们需要的任何代码(
是GWT说“请为这种类型生成实现”的线索)李>GWT.create()
- 然后,因为我们知道运行应用程序可能需要的所有可能的Java代码,所以我们优化了整个项目,并且可以简化
- 最后,我们将简化/优化的Java转换为JavaScript