我在下面的Open链接上阅读了局部变量类型推断的文档。
http://openjdk.java.net/jeps/286
有一件事引起了我的注意--“增强的for-循环中的索引”。我查了一下,不知道在哪里讨论了增强的for循环中的索引。到目前为止,我的理解是索引只允许在传统的for循环中使用(显然,我遗漏了一些东西)。
请您提供一些示例,以便在增强的for -循环中使用索引吗?
目标
我们通过减少编写Java代码的相关仪式,同时维护Java对静态类型安全性的承诺,通过允许开发人员省略经常不必要的局部变量类型的清单声明,来改善开发人员的体验。例如,这一特性将允许声明,例如: var list =新的ArrayList();//推断ArrayList var流= list.stream();//推断流 这种处理将仅限于带有初始化器的局部变量、增强的for -循环中的索引和传统for-循环中声明的局部变量;它不能用于方法表单、构造函数表单、方法返回类型、字段、捕捉格式或任何其他类型的变量声明。
发布于 2020-03-14 18:24:14
如果您进一步查看同一文档中链接的风格指南,您会发现在局部变量“示例”下使用迭代器的很好建议,如:
void removeMatches(Map<?扩展字符串?扩展Number>映射,int max) { for (var迭代器= 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);
}
}
}发布于 2020-03-14 18:13:23
这是指使用增强的for循环声明的变量,如:
var elements = new Arraylist<String>();
// Fill the list
for (var element : elements) {
// element is type String
}https://stackoverflow.com/questions/60685744
复制相似问题