【问题标题】:How to convert List<List<String>> into List<List<Object>>?如何将 List<List<String>> 转换为 List<List<Object>>?
【发布时间】:2020-11-27 03:02:21
【问题描述】:

like in convert 如何将List&lt;List&lt;String&gt;&gt; 转换为List&lt;List&lt;Object&gt;&gt;?例如getValue() 返回List&lt;List&lt;String&gt;&gt;,然后我需要将此列表作为List&lt;List&lt;Object&gt;&gt; 传递给适配器的构造函数。我不会泛化这个构造函数。我怎样才能做到这一点?当我尝试投射时,我得到Inconvertible types 错误

new TableTimetableAdapter(Repo.getValue());

【问题讨论】:

  • 结果应该可以修改吗?
  • @dan1st 结果是什么?
  • 你想要的List&lt;List&lt;Object&gt;&gt;。这应该是可修改/可变的吗?
  • 不,不应该。

标签: java list arraylist type-conversion


【解决方案1】:

铸造应该确实有效...您不能将List&lt;List&lt;String&gt;&gt; 转换为List&lt;List&lt;Object&gt;&gt;,但您可以将其转换为List,如下所示:

new TableTimetableAdapter((List) Repo.getValue());

【讨论】:

  • 所以我只需要使用原始类并忽略此警告吗?
  • 我认为你可以投射到你想要的对象
  • @Vemu 是的,如果你确定你的代码是正确的,你当然可以忽略警告,或者更好地抑制它并添加关于它为什么正确的评论。
【解决方案2】:

由于List&lt;List&lt;String&gt;&gt;List&lt;List&lt;Object&gt;&gt; 更具体,因此您无需强制转换。

【讨论】:

    【解决方案3】:

    我认为您不能只将一个类型的 List 转换为另一种类型,您需要将列表的内容映射到所需的子类型。

    你可以这样做:

    List<List<Object>> objects = Repo.getValue().stream()
            .map(strings -> strings.stream().map(string -> (Object) string).collect(Collectors.toUnmodifiableList()))
            .collect(Collectors.toUnmodifiableList());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 2018-12-27
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 2021-09-17
      相关资源
      最近更新 更多