[英]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,因此您會遇到錯誤。
您可以嘗試以下兩個選項:
// 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");
}
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.