我在下面的Open JDK链接中阅读了有关Local-Variable Type Inference的文档。
http://openjdk.java.net/jeps/286
一件事引起了我的注意-“ 索引在增强的for循环中 ”。我查了一下,看不到讨论了增强for循环的索引。到目前为止,我的理解是仅在传统的for循环中才允许使用索引(显然,我缺少某些内容)。
您能否提供一些在增强的for循环中使用索引的示例?
目标
我们试图通过减少与编写Java代码相关的仪式来改善开发人员的体验,同时通过允许开发人员取消经常不需要的局部变量类型的清单声明来维护Java对静态类型安全的承诺。例如,此功能将允许以下声明:
var list = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream(); // infers Stream<String>
这种处理将仅限于具有初始值设定项的局部变量,增强的for循环中的索引以及在传统的for循环中声明的局部变量;它不适用于方法形式,构造函数形式,方法返回类型,字段,catch形式或任何其他类型的变量声明。
问题来源:Stack Overflow
如果您进一步查看同一文档中链接的样式指南,则可以在“示例”下找到带有局部变量的迭代器,例如:
void removeMatches(Map<? extends String, ? extends Number> map, int max) {
for (var iterator = map.entrySet().iterator(); iterator.hasNext(); ) {
var entry = iterator.next();
if (max > 0 && matches(entry)) {
iterator.remove();
max--;
}
}
}
更具体地说,对于索引部分,您还可以执行以下操作:
void removeMatchesIndexes(List<? extends Number> list, int max) {
for (var i = 0; i < list.size(); i++) {
var entry = list.get(i);
if (entry.intValue() > max) {
list.remove(entry);
}
}
}
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。