首页 > 解决方案 > 将字符串列表转换为单个对象

问题描述

我们有一个字符串列表,并且希望使用该列表中的所有元素创建一个对象。列表可以有不同数量的元素,因此创建对象可能会导致 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 值的对象。

标签: javalistjava-8

解决方案


您可以像这样使用反射:按大小对所有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()));

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

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

推荐阅读