第一行在GWT中的工作速度会比第二行快吗?在不同的GWT版本中,在JavaScript中翻译此代码是否存在差异?
ArrayList<String> list = new ArrayList<String>();
List<String> list = new ArrayList<String>();
据我所知,如果我将编写declearet类型List,JavaScript性能将是最差的,因为将检查此List LinkedList或ArrayList或其他类型的列表。是不是?
如果我要写
,它会提高性能吗?ArrayList<String> list = new ArrayList<String>();
而不是
List<String> list = new ArrayList<String>();
答案 0 :(得分:4)
两条线都是等价的。 GWT编译器执行称为“类型收紧”的优化。您可以通过在编译模块时定义Java环境属性来观察编译器如何优化特定方法:
-Dgwt.jjs.traceMethods=Hello.onModuleLoad:OtherClass.otherMethod
来自JProgram
来源:
跟踪方法的格式是以冒号分隔的“className.methodName”列表,例如“Hello.onModuleLoad:Foo.bar”。您可以完全限定类以消除类的歧义,并且还可以附加方法的JSNI签名以消除重载的歧义,“Foo.bar(IZ)”。
答案 1 :(得分:0)
我不确定,但我认为当你使用List&lt; ...&gt;作为服务方法的返回类型,编译器必须编译所有List实现,因此如果使用ArrayList,它将生成更大的代码
答案 2 :(得分:0)
它们之间没有区别,都转换为非类型的JavaScript数组。毕竟你也可以使用String [],它在编译代码中没有任何区别。