类型去掉了,到后面这行代码 filter(heros, h -> h.hp > 100 && h.damage < 50); 里,代码怎么知道这个h是什么?它怎么知道h有hp和damage这两个属性的? filter这个方法有两个参数,一个是a list of heroes,一个是HeroChecker对象,假设HeroChecker里有两个方法test1和test2,test1的参数是Hero而test2的参数不是Hero,而是另一个不包含hp和damage参数的对象,那在上面那行代码里它怎么知道h.hp和h.damage是否应该报错?
使用lambda,去掉类型,可以去看接口的定义中对应的参数方法,就能知道。使用lambda这种方式,就要求定义接口时,不同的方法,参数不能一样,否则使用lambda无法定位到。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。