Java 无法返回 JSONArray:意外的返回值



我有这个函数:

playerList.forEach(pl ->{
JSONObject player = (JSONObject) pl;
System.out.println(player.get("UUID")+" : " + uuid+" :")

但是在线路"0"上有一个错误;返回翘曲";上面写着";意外的返回值";。为什么会发生这种情况?

就像am9417提到的那样,您的return语句位于forEach范围内,该范围是void函数,因此会出现错误。

这里有两个你可以尝试和玩的选项:

  1. 使用流。在这里,我使用过滤器来获取与uuid标准匹配的项/s(示例方法中的参数(。然后findFirst在最后总是得到第一个出现,假设您一直期望1个UUID匹配
// using findFirst returns an Optional type.
Optional<JSONObject> optionalPlayer = playerList
.stream()
.filter(pl -> {
JSONObject player = (JSONObject) pl;
System.out.println(player.get("UUID") + " : " + uuid + " :");
return player.get("UUID").equals(uuid);
}).findFirst();
if (optionalPlayer.isPresent()) {
return (JSONArray) optionalPlayer.get().get("warps");
}
  1. 使用简单的for循环:
JSONArray playerList = (JSONArray) obj;
for (Object pl: playerList) {
JSONObject player = (JSONObject) pl;
System.out.println(player.get("UUID") + " : " + uuid + " :");
if (player.get("UUID").equals(uuid)) {
return (JSONArray) player.get("warps");
}
}

您在一个匿名函数(ForEach表示playerList(中返回warps,因此ForEach的签名不匹配,从而导致错误。

您应该为流使用最可能的filter和合适的终止符。然后只需返回从getWarps方法收集的JSONArray。

最新更新