如何解决如何减少java中对象的所有字段
public class Pojo {
private long field1;
private long field2;
private long field3;
private long field4;
private long field5;
private double field6;
private double field7;
private double field8;
private double field9;
}
并且有一个 Pojo 列表,我想将此列表映射到一个 Pojo 对象,该对象将在其字段中包含 pojos 敌人列表。我的意思是这样的:
public static void main(String[] args) {
List<Pojo> pojoList = getPogoList();
Pojo pojoInSum = reduceAllFields(pojoList);
}
在没有反射的情况下从列表中减少 pojo 的所有字段的最简单方法是什么?
解决方法
您可以使用 Stream#reduce 方法:
public void reducePojoList() {
PojoReduce pojoReduce = new PojoReduce();
List<Pojo> pojoList = Arrays.asList(
new Pojo(3L,4.0),new Pojo(6L,1.1));
Optional<Pojo> reducedPojo = pojoList.stream().reduce(this::combine);
reducedPojo.ifPresent(System.out::println);
}
private Pojo combine(Pojo pojo1,Pojo pojo2) {
return new Pojo(
pojo1.getLongField() + pojo2.getLongField(),pojo1.getDoubleField() + pojo2.getDoubleField()
);
}
您必须为您添加的每个字段更新 combine
方法。您还将创建许多新对象。
最简单的方法是在该 pojo 中编写一个方法。因为如果你在一个类中建模一个东西,你应该公开行为而不是数据。
但我怀疑这就是您要寻找的内容,因此您可能需要查看反射。 基本上,您检索类的所有字段,获取实例的值,然后在循环或流中对它们求和。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。