【问题标题】:Dynamic conversion of List<Object> to List<T> in javajava中List<Object>到List<T>的动态转换
【发布时间】:2018-05-17 11:53:30
【问题描述】:

我的功能如下:

public Event convertModelToEvent(List<Object> reportingObject,String Feedname) {
        Event event = new Event();

        event.setHeaderReference(new HeaderReference());
        Class<?> classType = Class.forName(Feedname);

        List<classType> mythings = (List<classType>) (Object) reportingObject;

        event.setPayload(new Payload(reportingObject));
        event.setSpecifications(Lists.newArrayList());

        return event;
    }

在方法参数Feedname不过是类名,现在我想转换一下

List<Object> to List<Feedname>

Feedname 可以是任何类名。

谁能建议我还能用它做什么。

【问题讨论】:

  • 如果我提供一个 say 列表会发生什么。 . . WindowConstants 和一个字符串 JLabel?
  • 简单循环怎么样? for(Object obj:reportingObject){ 神话 .add(obj); }
  • 无法使用值“classType”设置类型参数。它在 List mythings = (List) (Object) reportingObject; 行显示错误
  • Java 是强类型语言。您可以使用动态 c 值作为泛型类型参数。充其量,您可以使用 List>。你可以看看我的回答。

标签: java spring-boot collections casting java-8


【解决方案1】:

我没有看到这通过铸造发生。您必须遍历 Object 集合,将引用转移到 T 集合中。 也许你可以使用 List.addAll(List list);我现在没有设置我的 IDE 来测试它。

【讨论】:

    【解决方案2】:

    如果 Feedname 可以是任何类,你最多可以构造 List&lt;?&gt; 。 你可以这样做:

    List<?> mythings = reportingObject.stream()
        .map(classType::cast)
        .collect (Collectors.toList())
    

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 2021-11-26
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多