我目前正在使用SpigotAPI为Minecraft创建一个插件。我在这里发布的原因是因为我认为这是一个Java错误。我正在创建一个决斗插件,在我的代码中,它将循环通过枚举,并查看它是否是特定类型。第一次使用它正常工作,没有问题。但是当我第二次尝试它而不重新启动我的插件/程序/代码时,它会将枚举返回为null。这是代码,有没有解决这个问题?
public DuelArenas[] getArenasWithType(DuelTypes type) {
String suffix = "_NORMAL";
List<DuelArenas> arenasAsList = new ArrayList<>();
switch (type) {
case NORMAL:
suffix = "_NORMAL";
break;
}
for (DuelArenas arena : duelArenaStatus.keySet()) {
if (arena.toString().endsWith(suffix)) {
arenasAsList.add(arena);
}
}
DuelArenas[] arenas = new DuelArenas[arenasAsList.size()];
return arenasAsList.toArray(arenas);
}
堆栈跟踪:
Caused by: java.lang.NullPointerException
at me.nick.acore.duels.DuelsAPI.getArenasWithType(DuelsAPI.java:97) ~[?:?]
是的,我已经检查过enum是否为null,实际上它是null。第97行也是
if (arena.toString().endsWith(suffix)) {
最后这里是DuelArena课程
public enum DuelArenas {
ARENA_1_NORMAL, ARENA_2_NORMAL, ARENA_3_NORMAL, ARENA_4_NORMAL, ARENA_5_NORMAL,
ARENA_6_NORMAL, ARENA_7_NORMAL, ARENA_8_NORMAL, ARENA_9_NORMAL, ARENA_10_NORMAL,
ARENA_11_NORMAL, ARENA_12_NORMAL }
谢谢!
答案 0 :(得分:1)
您的问题是您无法直接将自定义DuelArenas
类转换为字符串。但是,当您进行比较以查看.toString()
是否以suffix
结尾时,我觉得某些事情也会出错。您只能使用.toString
将数字转换为字符串,如果您要将数字转换为字符串,则无法以_NORMAL
结束。
因此,如果您希望我进一步排查问题,请发布您的DuelArenas
课程,但在此之前,我最好的猜测是当您执行arena.toString
时,您希望从存储的类中提取某种值它,为了做到这一点,你可以做arena.variableInsideArenaName
并使用它。
修改强>
看到班级划痕后,错误就会出现在这一行的某个地方DuelArenas arena : duelArenaStatus.keySet()