首页 > 解决方案 > 为什么 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 文档中对此进行了解释?

标签: javafor-loopgenericsjava-8iteration

解决方案


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

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

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

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

因此,for (T t : this)是通过forEach(Consumer<? super T> action).


推荐阅读