0

我有一个静态 ArrayList:

    public class Global {
    public static ArrayList<Player> Round;
}

据我了解,一个不会实例化静态数组,所以我第一次访问 ArrayList 是:

    Player lPlayer = new Player(name,level);
    Global.Round.add(lPlayer);

它使应用程序崩溃。我相当有信心 lPlayer 是正确形成的。添加新播放器时会调用此行,所以我不知道这是否是我第一次调用 .add,但这不重要,对吧?

错误是“InvocationTargetException。(Throwable)行:50”。

关于有什么问题的任何想法?

谢谢。

4

3 回答 3

3

阅读异常堆栈跟踪的其余部分,您可能会发现异常的原因是 NullPointerException。

ArrayList 在实例化之前是不存在的,就像任何对象一样。不管它是否是静态的,都不会改变任何东西。

于 2013-11-08T18:32:02.143 回答
1

您必须像下面这样初始化 Round 对象。否则你会得到 NUllPointerException

public class Global {
    public static ArrayList<Player> Round = new ArrayList<>();
}
于 2013-11-08T18:31:59.040 回答
1

你是说:

一个不实例化静态数组,

你在哪里找到它?

您需要实例化一个实例字段,无论它是static还是non-static. 它们之间唯一的区别是:static字段与 相关联class,而不是与 any相关联object。的每个实例class共享一个class变量,该变量位于内存中的一个固定位置

你还没有初始化ArrayList<Player> Round. 所以创建它:

public static ArrayList<Player> Round = new ArrayList<>();
于 2013-11-08T18:35:35.423 回答