因为这毫无意义,这样只是定义了引用为static final,数组的内容还是可以随意改变的,将数组声明为public更是一个安全漏洞,这意味着这个数组可以被外部类所改变。
但是我们可以把数组声明为final类型。
在使用final修饰基本类型变量的时候,不可以对基本类型变量重新赋值,所以的话,基本类型变量不能被改变,可是对于引用类型变量来说的话,它保存的仅仅是一个引用,final只保证这个引用类型变量所引用的地址不会改变,也就是一直引用同一个对象,但这个对象完全可以发生改变。
Integer areaTotal = 0; if(id==null||id==0){
Example example = new Example(AreaInfo.class);
example.createCriteria().andNotEqualTo("areaName",areaName)
.andEqualTo("enterpriseId",curUser.getEnterpriseId())
.andEqualTo("baseId",baseId);
List<AreaInfo> areaInfos = areaInfoMapper.selectByExample(example);
areaInfos.stream().forEach(item -> {
areaTotal += item.getAreaArea();
});
if (baseInfo.getBaseArea() < areaTotal + areaInfo.getAreaArea()) {
return Result.operating("地块面积大于基地面积", false, ResultCode.SUCCESS);
}
}
注意:此时areaTotal中会提示“variable used in lambda expression should be final or effictively final”,
此时,将鼠标放到areaTotal中,按住alt + enter键,选中Transform 'areaTotal' into final one element array,意思是将areaTotal转为只有一个元素的final数组。
结果如下:
final Integer[] areaTotal = {0}; if(id==null||id==0){
Example example = new Example(AreaInfo.class);
example.createCriteria().andNotEqualTo("areaName",areaName)
.andEqualTo("enterpriseId",curUser.getEnterpriseId())
.andEqualTo("baseId",baseId);
List<AreaInfo> areaInfos = areaInfoMapper.selectByExample(example);
areaInfos.stream().forEach(item -> {
areaTotal[0] += item.getAreaArea();
});
if (baseInfo.getBaseArea() < areaTotal[0] + areaInfo.getAreaArea()) {
return Result.operating("地块面积大于基地面积", false, ResultCode.SUCCESS);
}
}