java - 将字符串列表转换为单个对象
问题描述
我们有一个字符串列表,并且希望使用该列表中的所有元素创建一个对象。列表可以有不同数量的元素,因此创建对象可能会导致 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 值的对象。
解决方案
您可以像这样使用反射:按大小对所有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());
推荐阅读
- php - oembed_result 没有在我的 Wordpress 主题上运行
- python - 按高度/方向对图像进行排序
- php - 上传和调整图片大小问题
- sql - SQL Server 中的多表记录删除查询不正确的语法错误
- listview - 如何自动调整 ScrollView 的大小以适应 xamarin 表单中的内容
- tensorflow - 过度拟合的指示
- javascript - 无法从 sql server 获取数据到 php 页面?
- ruby - Sidekiq 中多线程上的 Selenium WebDriver
- javascript - 使用 Javascript 进行网页抓取?
- reactjs - 如何通过 JSON 向服务器发送 API 请求?不断收到 CORS 错误