使用Guava Iterables时将使用什么Iterable

时间:2016-03-03 09:03:06

标签: java iterator guava iterable

给出以下结构类:

public class Section extends IterableWidgetTemplate<Item>{

    private List<WebElement> items1;

    // other non iterable methods

    private int indexOf(final Item item) {

        int i = Iterables.indexOf(this, new Predicate<Item>() {

            . . . 

        });

        return i;
    }

其中Iterables是一个Guava com.google.common.collect.Iterables,根据其文档,它包含对Iterable类型的对象进行操作的静态实用程序方法。

现在,在上面描述的类中,this作为可迭代传递给private int indexOf()方法。

问题:

  1. 我要在this对象中迭代什么?我是否正确地假设Iterables类将使用传递给它的对象中唯一可用的可迭代方法?所以在这种情况下,我们在List<WebElement>对象中有this变量。
  2. 如果对1.的回答是&#34;是&#34;,如果Section类有多个可迭代变量,会发生什么?其中哪一个将用于迭代?

1 个答案:

答案 0 :(得分:2)

Iterables.indexOf()将第一个参数作为实现Iterable接口的对象。因此,Iterables.indexOf()迭代的内容由作为参数传入的对象定义,在您的示例中为Section类。但它没有使用变量 - 它将调用Iterable.iterator()对象上的Section方法。不可能有多个这样的方法,因此不存在对Iterables.indexOf()将迭代的内容产生混淆的情况。