簡體   English   中英

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

[英]Java can't return JSONArray: Unexpected return value

我有這個 function:

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

但在“return warps”行有一個錯誤,上面寫着“Unexpected return value”。 為什么會這樣?

就像am9417提到的那樣,您的 return 語句位於forEach scope 中,這是一個void function,因此您會遇到錯誤。

您可以嘗試以下兩個選項:

  1. 使用流。 在這里,我使用過濾器來獲取與 uuid 條件匹配的項目(示例方法中的參數)。 然后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");
    }
}

您正在匿名 function (針對 playerList 的 ForEach)中返回經線,因此 ForEach 的簽名不匹配,這會導致錯誤。

您應該為您的 stream 使用最有可能的filter和合適的終結器。 然后只需從您的getWarps方法返回收集的 JSONArray。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM