java - 为什么 for(T t : this) 有效,它是什么意思?
问题描述
public abstract class MyAbstractSet<T> implements Iterable<T> {
...
// some code
...
method addElement(T t){
for (T t : this) {
//why does this work????
}
}
}
我刚刚完成了关于Java 中的集合、实现Iterable
和类的作业。Iterator
作业的全部目的是理解泛型和集合,我想我现在已经掌握了。
然而,在上面实现这个类时MyAbstractSet<T>
,我输入for(T t: this)
错误,这让我有些困惑,因为编译器编译它没有问题。
我试图弄清楚这意味着什么,但还不清楚。就像添加泛型类型<T>
会使类成为某种列表一样,for-each-loop 会对其进行迭代?
有人可以向我解释为什么它有效以及它的作用,也许还可以发布一个链接,在 Java 文档中对此进行了解释?
解决方案
简单地说,它是这些的组合:
一个增强的 for 循环,我打赌你知道:
List<String> listOfStrings = ... for (String string: listOfStrings)
T
代表泛型类型。List<T>
是一个很好的例子。this
指调用方法的类的实例。由于this
implementsIterable<T>
,它可能用于增强循环。
因此,for (T t : this)
是通过forEach(Consumer<? super T> action)
.
推荐阅读
- python - 使用小于运算符的熊猫数据框合并表达式?
- android - 安卓屏幕录像机,仅记录特定应用程序,不包括通知和覆盖
- database - Elasticsearch 作为聊天应用程序的主要数据源
- pycharm - ubuntu pycharm 无法附加到进程
- c# - 在客户端跟踪打开的 Oracle 连接
- javascript - Javascript 库 html2canvas:渲染时出现错误消息
- react-native - 我想降低高度,但在 react-native 中并没有降低
- mule - Dynamics AX 连接器 2012 动态公司配置属性 Mule 4
- javascript - 使用多个单选框禁用多个输入字段
- selenium - 如何在 Chrome DevTools 中自动切换传感器/位置以进行自动化测试?