将字符串列表转换为单个对象

t9eec4r0  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(526)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

上个月关门了。
改进这个问题
我们有一个字符串列表,希望使用该列表中的所有元素创建一个对象。列表可以有不同数量的元素,因此创建一个对象可能会导致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值的对象。

ct3nt3jp

ct3nt3jp1#

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

相关问题