Java 无法将值赋给最终变量';每周总日分钟';
我有加班实体的列表,我需要过滤它们,然后我需要得到每个实体的DailReports数组并计算WeekTotalDailyMinutes变量Java 无法将值赋给最终变量';每周总日分钟';,java,arrays,Java,Arrays,我有加班实体的列表,我需要过滤它们,然后我需要得到每个实体的DailReports数组并计算WeekTotalDailyMinutes变量 final long weekTotalDaylyMinutes = 0; List<Overtime> all; all = this.shiftRepository .findAllOvertimesByYearAndMonth(year, month)
final long weekTotalDaylyMinutes = 0;
List<Overtime> all;
all = this.shiftRepository
.findAllOvertimesByYearAndMonth(year, month)
.stream()
.filter(o -> this.getOvertimeWeekOfYear(o) == currentOvertimeWeekOfYear
&& o.getDeleted() == false
&& !Objects.equals(o.getId(), genericOvertimeDTO.getId()))
.peek(overtime->this.getDialyOvertimeReports(overtime, year, month)
.stream()
.peek(a-> weekTotalDaylyMinutes+=a.getDayMinutes())
)
final long week totaldaylyments=0;
列出所有;
全部=此。移位移位移位
.FindalLoverTimesByYear和month(年,月)
.stream()
.filter(o->this.getOvertimeWeekOfYear(o)=currentOvertimeWeekOfYear
&&o.getDeleted()==false
&&!Objects.equals(o.getId(),genericOvertimeDTO.getId())
.peek(加班->此.getDialyOvertimerReports(加班、年、月)
.stream()
.peek(a->weekTotalDaylyMinutes+=a.getDayMinutes())
)
但我得到了一个错误:
无法为最终变量'weekTotalDaylyMinutes'赋值代码>
如何解决这个问题?我需要得到这个变量中所有a.getDayMinutes超时的总和。提前谢谢 您可以使用带有一个元素的数组来允许在lambda中进行修改
final long[] weekTotalDaylyMinutes = {0};
List<Overtime> all;
all = this.shiftRepository
.findAllOvertimesByYearAndMonth(year, month)
.stream()
.filter(o -> this.getOvertimeWeekOfYear(o) == currentOvertimeWeekOfYear
&& o.getDeleted() == false
&& !Objects.equals(o.getId(), genericOvertimeDTO.getId()))
.peek(overtime->this.getDialyOvertimeReports(overtime, year, month)
.stream()
.peek(a-> weekTotalDaylyMinutes[0] +=a.getDayMinutes())
);
System.out.println(weekTotalDaylyMinutes[0]);
final long[]weektotaldaylyments={0};
列出所有;
全部=此。移位移位移位
.FindalLoverTimesByYear和month(年,月)
.stream()
.filter(o->this.getOvertimeWeekOfYear(o)=currentOvertimeWeekOfYear
&&o.getDeleted()==false
&&!Objects.equals(o.getId(),genericOvertimeDTO.getId())
.peek(加班->此.getDialyOvertimerReports(加班、年、月)
.stream()
.peek(a->weekTotalDaylyMinutes[0]+=a.getDayMinutes())
);
System.out.println(周总日分[0]);
无法修改最终变量。此外,由于您使用的是lambda函数,因此该变量实际上应该是最终变量
所以你必须把计数放在某个物体内
创建一个具有一个值的类,并将weekTotalDaylyMinutes保持在该值内,最终值是一个您不希望在短时间内更改的值,如。
因此,如果您真的想使用weekTotalDailyMinutes,我建议您删除'final'关键字,如果您正在寻找一个超越类实例的变量,最好使用'static',finalfinal
意味着您无法再更改它。它的值是final
。除了实际问题之外,这是滥用流API。使用sum()。此外,weekTotalDaylyMinutes的名称也很糟糕。