Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用匿名类_Java_Class_Anonymous - Fatal编程技术网

Java 使用匿名类

Java 使用匿名类,java,class,anonymous,Java,Class,Anonymous,所以我有一个清单 public static List<Position> chests = new ArrayList<Position>(); 或 或 。。这些都不起作用:它们总是返回0,因此for-循环被完全跳过 我是不是忽略了什么?我好像没法让它工作。一切似乎都正常。尝试改用迭代器。由于您在第一次调用ChestGRabber.getChest时得到了一些东西,所以将其保存在一个列表中,并在for循环中迭代相同的列表。这本应该奏效的。照我说的去做,否则一切都会好的

所以我有一个清单

public static List<Position> chests = new ArrayList<Position>();

。。这些都不起作用:它们总是返回
0
,因此
for
-循环被完全跳过


我是不是忽略了什么?我好像没法让它工作。

一切似乎都正常。尝试改用迭代器。由于您在第一次调用ChestGRabber.getChest时得到了一些东西,所以将其保存在一个列表中,并在for循环中迭代相同的列表。这本应该奏效的。照我说的去做,否则一切都会好的。尝试删除工作区的元数据并再次导入项目(如果您使用的是eclpise),尝试清理项目。您的代码是正确的

您正在调用
chests.clear()在启动新线程后立即执行(但这并不意味着线程在调用
start()
)后正在运行),因此在新线程尝试读取列表之前,列表可能会被清除

你怎么把数据放在列表里?你的列表一定是空的,伙计。在For循环之前,Sysout the List.size()是的,与使用匿名类无关。@immibis之所以添加,是因为我有一个打印大小的调试功能,每次我向列表中添加对象时,它都会增加大小。@DevinK在一个线程中所做的更改不能保证对其他线程可见,特殊情况除外。您如何将数据放入列表中?另外,发布
getChests
的实现。我认为使用迭代器不会改变任何事情。列表的大小(以某种方式)从线程外部变为内部(run方法的第一行)。我可以尝试它,但我怀疑它会改变任何东西。我将尝试其他方法,看看是否有帮助。
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()