Java 映射流操作中的强制转换调用不工作

Java 映射流操作中的强制转换调用不工作,java,java-stream,Java,Java Stream,我有以下内容(使用org.json.simple): 问题是,在我调用map将流元素强制转换为JSONObject之后,在下一次调用map时,元素仍然是Object,而不是JSONObject。不知道我做错了什么 相关:扩展了java.util.ArrayList,这意味着它扩展了原始类型 因此,results.stream()返回一个原始流,而不是流,即使在调用map(),您仍然会得到一个原始流,因此强制转换对您没有帮助 如果改为org.json.simple.JSONArrayextende

我有以下内容(使用org.json.simple):

问题是,在我调用map将流元素强制转换为
JSONObject
之后,在下一次调用map时,元素仍然是
Object
,而不是
JSONObject
。不知道我做错了什么

相关:

扩展了
java.util.ArrayList
,这意味着它扩展了原始类型

因此,
results.stream()
返回一个原始
流,而不是
,即使在调用
map()
,您仍然会得到一个原始
,因此强制转换对您没有帮助

如果改为
org.json.simple.JSONArray
extended
ArrayList
,则会得到一个
,在调用
.map(JSONObject.class::cast)
之后,会得到一个

我相信通过以下未经检查的演员阵容,你应该能够克服这一点:

final JSONArray results = (JSONArray) responseObject.get("results");
List<Object> genericResults = (List<Object>) results;
List<JSONObject> list =
    genericResults.stream()
                  .filter(JSONObject.class::isInstance)
                  .map(JSONObject.class::cast)
                  .collect(Collectors.toList());
final JSONArray results=(JSONArray)responseObject.get(“结果”);
列出genericResults=(列表)结果;
列表=
genericResults.stream()
.filter(JSONObject.class::isInstance)
.map(JSONObject.class::cast)
.collect(Collectors.toList());
final JSONArray results = (JSONArray) responseObject.get("results");
List<Object> genericResults = (List<Object>) results;
List<JSONObject> list =
    genericResults.stream()
                  .filter(JSONObject.class::isInstance)
                  .map(JSONObject.class::cast)
                  .collect(Collectors.toList());