当前位置: 首页 > 知识库问答 >
问题:

映射流操作中的强制转换调用不工作[重复]

徐昕
2023-03-14

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

 import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
 ...
 final JSONArray results = (JSONArray) responseObject.get("results");
 results
        .stream()
        .filter(JSONObject.class::isInstance)
        .map(JSONObject.class::cast)
        .map(obj -> obj) // obj is still Object here, not JSONObject?

问题是在我调用map将流元素转换为JSONObject之后,在下一次调用map时,元素仍然是Object,而不是JSONObject。不确定我在这里做错了什么?

相关:是否可以在Java 8中强制转换流?

共有1个答案

解晟睿
2023-03-14

组织。json。易于理解的JSONArray扩展了java。util。ArrayList,这意味着它扩展了原始类型。

结果,<代码>结果。stream()返回原始流,而不是流

如果组织。json。易于理解的JSONArray扩展阵列列表

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

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());
 类似资料:
  • 如何化解?在Spring Boot中默认的视图解析器是什么?我需要强制使用胸腺嘧啶吗? 另外,我是否需要向application.properties添加一些内容

  • 我有以下两门课: : : 我希望进行流操作,以便: 将映射到中的 的和分别合并到和中,对于所有具有相同id的s 为此,我编写了以下一段代码: 它的工作和输出如下: 但我相信有一种更好的方式可以达到同样的效果。任何一个指针都很好。

  • 我正在尝试使用stream将列表转换为哈希映射。这是我的代码。。 现在我想添加一个条件,若我得到属性名为null,那个么应该将项添加到带有空字符串的映射中,如下所示(任意_attributeName,“”)。 如何使用流操作实现这一点。我知道我可以使用过滤条件检查属性名是否为null,但如果为null,我可以添加空白字符串吗。有可能吗?如果没有,为什么?请帮忙。

  • 抽象值操作 在我们可以探究 明确 与 隐含 强制转换之前,我们需要学习一些基本规则,是它们控制着值如何 变成 一个 string、number、或 boolean 的。ES5 语言规范的第九部分用值的变形规则定义了几种“抽象操作”(“仅供内部使用的操作”的高大上说法)。我们将特别关注于:ToString、ToNumber、和 ToBoolean,并稍稍关注一下 ToPrimitive。 ToStr

  • 我试图映射到道具的行动,但我得到一个错误:类型错误:_this2.props.updateUsername不是一个函数 如何成功地将redux操作映射到props并成功调用函数?我在任何其他stackoverflow问题/答案中都没有看到这个错误弹出,这是一个简单的错误吗?会不会是在. index或. app中对redux的设置错误? 我试过:-不使用默认导出导入-有不同格式的mapDispatc

  • 问题内容: 我正在尝试调试Java中涉及ClassCastException的问题。为了解决该问题,我需要知道从Object转换为特定类型时发生了什么。 谁能向我解释Java Cast操作符如何在Java级别和JVM级别工作? 问题答案: JLS是否足够好? 强制转换将应用于强制转换操作符的操作数(第15.16节):操作数表达式的类型必须转换为强制转换操作符显式命名的类型。铸造上下文允许使用: 身