public Double getTotal()
{
Double totalAmount = 0D;
long memberCount = 200;
List<Fee> fees = feesMngr.all();
for (FeeDto fee : fees)
{
if(fee.type.equals(FeeType.REGISTRATION))
{
Optional<Year> currentYear = this.getCurrentYear();
if(currentYear.isPresent())
{
FeeDto addServiceCharge = feesMngr.getFeeByType(FeeType.SERVICE_FEE);
totalAmount +=(addServiceCharge.getAmount() * memberCount);
}
if(feesMngr.getFeeByType(FeeType.LIBRARY_FEE) != null)
{
totalAmount += (200 * memberCount);
}
}
else{
totalAmount += (fee.getAmount() * memberCount);
}
}
return totalAmount;
}
Я сделал что-то вроде следующего, но продолжаю получать красные линии; говоря мне, что "локальные переменные, на которые ссылается лямбда-выражение, должны быть окончательными или эффективно окончательными". Все еще ничего не решает, когда я объявляю totalAmount final.
fees.parallelStream()
.forEach(
(fee) -> {
if (fee.getType().equals(FeeType.REGISTRATION.name())) {
FeeDto addServiceCharge = feesMngr.getFeeByType(FeeType.SERVICE_FEE);
totalAmount += (fee.getAmount() * memberCount);
}
else {
totalAmount += (fee.getAmount() * memberCount);
}
});