gpt4 book ai didi

Java 枚举返回 Null

转载 作者:行者123 更新时间:2023-12-01 11:19:04 24 4
gpt4 key购买 nike

我目前正在使用 SpigotAPI 为 Minecraft 创建一个插件。我之所以在这里发布此内容是因为我认为这是一个 Java 错误。我正在创建一个决斗插件,在我的代码中它将循环遍历枚举,并查看它是否是特定类型。第一次使用它周围正常工作,没有问题。但是,当我在不重新启动插件/程序/代码的情况下第二次尝试它时,它将返回枚举为空。这是代码,有解决办法吗?

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) ~[?:?]

是的,我检查了枚举是否为空,它实际上为空。第 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 }

谢谢!

最佳答案

您的问题是您无法直接将自定义 DuelArenas 类转换为字符串。然而,当您比较 .toString() 是否以 suffix 结尾时,我觉得也出了问题。您只会使用 .toString 将数字等内容转换为字符串,如果您要将数字转换为字符串,则它不可能以 _NORMAL 结尾。< br/>
因此,如果您希望我进一步排除故障,请发布您的 DuelArenas 类,但在那之前我最好的猜测是,当您执行 arena.toString 时,您希望提取某种来自存储在其中的类的值,为此,您需要执行 Arena.variableInsideArenaName 并使用它。

编辑:
看到类划痕后,错误将出现在这一行 DuelArenas arena : duelArenaStatus.keySet()

关于Java 枚举返回 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31465983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com