所以我有一个清单

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/

10-09 19:40