Variable used in lambda expression should be final or effectively final

自从用了JDK8 的流操作之后,就上瘾了,真是太方便了。
但是今天做过滤的时候遇到了一个问题,向集合中添加对象的时候判断此对象是否已经存在。
用表达式过滤,结果竟然报错了
在这里插入图片描述向集合中插入服务器对象,如果已经存在了这个ip了,就抛异常。

开始想用lamdba,但是编译报错 Variable used in lambda expression should be final or effectively final
所以只能重写equals 比较ip了

原因
Lambda 表达式引用的是值,而不是变量.所以在lamdba和匿名内部类中使用变量不能被改变

如果你试图给该变量多次赋值,然后在 Lambda 表达式中引用它,编译器就会报错,典型的就是在for循环里使用lamdba了,如果你需要用到for循环的i变量,那么lamdba是不合适的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值