【问题标题】:Convert List of String to a single Object [closed]将字符串列表转换为单个对象 [关闭]
【发布时间】:2020-11-21 06:45:01
【问题描述】:

我们有一个字符串列表,并希望使用该列表中的所有元素创建一个对象。列表可以有不同数量的元素,因此创建对象可能会导致 NPE。有什么更好的方法来创建对象?

List<String> example = {'BookName', 'value','3'}

BookRating.build.getBookName(example.get(0)).getBookValue(example.get(1)).getRating(example.get(2)).build();

当示例只有 2 个值时,这可能会导致 NPE。有什么建议吗?

已编辑:我们可以拥有具有 1/2/3 值的对象。

【问题讨论】:

  • 您可以检查列表的长度,如果元素少于 3 个则不建立评分
  • 只需第一个参数即可创建这些对象
  • 您可以在 if 语句中检查长度:`if (example.size() === 1) {...} else if (example.size() === 2) { ....}.....

标签: java list java-8


【解决方案1】:

您可以像这样使用反射: 按大小对所有 Book 类构造函数进行分组。

List<String> example = List.of("BookName", "value","3");

Map<Integer, Constructor<?>> groupBySize = 
       Arrays.stream(Book.class.getConstructors())
  .collect(Collectors.toMap(Constructor::getParameterCount, Function.identity()));

然后按 list 大小调用构造函数并将列表值作为参数传递。

Book book = (Book) groupBySize.get(example.size()).newInstance(example.toArray());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多