所以我有一个清单
public static List<Position> chests = new ArrayList<Position>();
在我的主类中,但是在这个主类中,我有一个使用此列表的匿名类(线程)。无论出于何种原因,该线程都无法从该列表中正确读取信息。这是该匿名类的其他代码:
new Thread(new Runnable() {
public void run() {
for (int i = 0; i < ChestGrabber.getChests().size(); i++) {
Position chest = (Position) ChestGrabber.getChests().get(i);
if (player.getDistance(chest.x, chest.y,
chest.z) <= 4.7F) {
openChest((int) chest.x, (int) chest.y, (int) chest.z);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// chests.remove(chest);
}
}
}
}).start();
我试图以几种不同的方式访问列表:
ChestGrabber.getChests().size()
要么
getChests().size()
要么
chests.size()
..并且这些都不起作用:它们总是返回
0
,因此for
循环被完全跳过。我在俯视什么吗?我似乎无法使它正常工作。
最佳答案
您在启动新线程后立即调用chests.clear();
(但这并不意味着线程在调用start()
之后正在运行),因此在新线程尝试从中读取之前,该列表可能已被清除。
关于java - 使用匿名类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24864051/