显然Java7有一些关于循环优化的讨厌错误:谷歌搜索.
从报告和错误描述中我发现很难判断这个bug有多重要(除非你使用Solr或Lucene).
我想知道的是什么:
注意:我无法让用户使用我的程序-XX:-UseLoopPredicate
来避免这个问题.
正如我所看到的,列表在数组上的优势非常明显:
List<Integer>, List<? extends Number>, List<? super Integer>
.addAll
,remove
等等.虽然对阵列除了获得/设置所有标准操作必须在过程中的方式通过将它传递给一个静态方法进行.ArrayList
,LinkedList
不可修改和同步列表,可以隐藏在公共List接口下.作为缺点,我只能提到没有语法糖和运行时类型检查.同时支持两种结构需要频繁使用asList
和toArray
方法,这使得代码不易读取.所以我很好奇使用我想念的数组有什么重要的好处.
如您所知,在Eclipse中,您可以启用" 不必要的'else'语句 "检查,这将在if-then-else上触发,提前返回.而且,根据我的经验,使用此类声明时有两种最可能的情况:
1)预检:
if (!validate(arg1)) {
return false;
}
doLotOfStuff();
Run Code Online (Sandbox Code Playgroud)
2)检查后:
doLotOfStuff();
if (condition) {
return foo;
} else {
return bar;
}
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,如果触发器打开,Eclipse将建议您将代码更改为:
doLotOfStuff();
if (condition) {
return foo;
}
return bar;
Run Code Online (Sandbox Code Playgroud)
但是,我认为使用else语句返回更具可读性,因为它类似于业务逻辑的直接映射.如果这个"不必要的'其他'声明"代码约定很普遍,或者使用else语句的代码更优选,那么我很好奇吗?