为什么 for(T t : this) 起作用,它是什么意思?

Maj*_*ima 3 java generics iteration for-loop java-8

public abstract class MyAbstractSet<T> implements Iterable<T> { 
    ...
    // some code
    ...
    method addElement(T t){
        for (T t : this) {
           //why does this work????
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我刚刚完成了关于Java 中的集合和实现Iterable以及Iterator类的作业。作业的全部目的是理解泛型和集合,我想我现在已经掌握了。

然而,在上面实现这个类时MyAbstractSet<T>,我打错for(T t: this)了,这让我有点困惑,因为编译器在编译它时没有问题。

我试图弄清楚这意味着什么,但还不清楚。就像添加泛型类型<T>使类成为某种列表一样,for-each-loop 对其进行迭代?

有人可以向我解释为什么这会起作用以及它的作用是什么,也许还可以发布一个链接,在 Java 文档中对此进行了解释?

Nik*_*las 9

简单地说,它是这些的组合:

  • 一个增强的 for 循环,我打赌你知道它:

    List<String> listOfStrings = ...
    for (String string: listOfStrings)
    
    Run Code Online (Sandbox Code Playgroud)
  • T代表泛型类型。List<T>是一个很好的例子。

  • this指类的实例,其中调用的方法。由于thisimplements Iterable<T>,它可能用于增强循环。

因此,for (T t : this)是通过 访问的所有元素的类的相同实例的增强循环forEach(Consumer<? super T> action)