我有一个静态ArrayList:
public class Global {
public static ArrayList<Player> Round;
}
据我所知,没有实例化静态数组,所以我第一次访问ArrayList是:
Player lPlayer = new Player(name,level);
Global.Round.add(lPlayer);
它崩溃了应用程序。我相当确信lPlayer是否正确形成。添加新玩家时会调用此行,所以我永远不知道这是否是我第一次调用.add,但这不重要,对吧?
错误是“InvocationTargetException。(Throwable)line:50”。
关于什么是错的任何想法?
感谢。
答案 0 :(得分:3)
读取异常堆栈跟踪的其余部分,您可能会发现异常的原因是NullPointerException。
在您实例化ArrayList之前,它不存在,就像任何对象一样。它是否静止不会改变任何东西。
答案 1 :(得分:1)
你必须像下面这样初始化Round对象。否则你会得到NUllPointerException
public class Global {
public static ArrayList<Player> Round = new ArrayList<>();
}
答案 2 :(得分:1)
你在说:
一个不实例化静态数组,
你在哪里找到它?
您需要实例化static
或non-static
的实例字段。只有它们之间的区别在于:static
字段与class
相关联,而不是与任何object
相关联。 class
的每个实例都共享一个class
变量,该变量位于内存中的一个固定位置。
您尚未初始化ArrayList<Player> Round
。所以创建它:
public static ArrayList<Player> Round = new ArrayList<>();