“使用不可重入迭代器方法:Array.iterator()”错误消息是什么意思?

Waq*_*leh 3 java android reentrancy arrayiterator libgdx

这是我的第一个项目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);
    }
...
Run Code Online (Sandbox Code Playgroud)

Android Studioitems在悬停时突出显示消息:

使用不可重入迭代器方法:Array.iterator()

每次调用该方法时,LibGDX 集合上的迭代器方法都会返回相同的迭代器实例。对于嵌套或多线程迭代,使用适当的构造函数创建一个新的迭代器

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

任何想法这是什么以及如何解决它?

And*_*ner 7

就像它在文档中所说的那样

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

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

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

使用 Array.ArrayIterator 构造函数进行嵌套或多线程迭代。

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