代码之家  ›  专栏  ›  技术社区  ›  Waqleh

使用不可重入迭代器方法做什么:Array。迭代器()错误消息的意思是?

  •  5
  • Waqleh  · 技术社区  · 6 年前

    这是我在 libGDX 我试着循环一个 com.badlogic.gdx.utils.Array :

    //properties
    ...
    private Array<Item> items;
    ...
    //constructor
    ...
        items = new Array<Item>();
    ...
    //render method
    ...
        for (Item item : items) {
            item.update(deltaTime);
        }
    ...
    

    Android studio正在突出显示 items 悬停消息时:

    使用不可重入的迭代器方法:Array。迭代器()

    LibGDX集合上的迭代器方法每次 方法被调用。对于嵌套或多线程迭代,创建新的 使用适当构造函数的迭代器

    我不知道如何解决这个问题,或者这是否只是一个通知类型的错误,以及从长远来看是否会影响任何事情。

    你知道这是什么,怎么解决吗?

    1 回复  |  直到 6 年前
        1
  •  8
  •   Andy Turner    6 年前

    就像上面说的 in the documentation :

    请注意,每次调用此方法时都会返回相同的迭代器实例。

    因此,如果您从两个不同的线程调用它,那么在一个线程中调用next将使另一个线程中的迭代器前进。

    (或者,在同一个线程中调用它两次,在一个实例上调用next也会提升另一个实例。这本身与线程无关)。

    使用数组。用于嵌套或多线程迭代的ArrayIterator构造函数。

    使用 new Array.ArrayIterator<>(items) 而不仅仅是 items

    推荐文章