为了账号安全,请及时绑定邮箱和手机立即绑定

java8 lambda表达式

java8 lambda表达式

Leo_clip 2017-11-23 21:04:27
package work7; interface Colorable {    public void howToColor(String colorName); } public class Test{    public static void main(String[] args){       Colorable rect=new Colorable(){             @Override             public void howToColor(String colorName) {              System.out.println(colorName);             }       };       rect.howToColor("red");       //请使用Lambda表达式对上述的匿名类的对象创建重新定义,具有相同的功能       rect.howToColor(n -> System.out.println(n));       rect.howToColor("blue"); /**请将上述的Lambda表达式改写成如下形式,解释说明下列代码  *并观察运行结果.  */       rect=System.out::println;       rect.howToColor("green");    } }运行lambda表达式出错,求解释,该怎么写呢?
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

lambda表达式本身没有错。但不应该将其放到16行的括号中。

让rect直接引用这个lambda表达式就好了:

Colorable rect = n -> System.out.println(n);


因为lambda最终会转换为实现该接口的一个实例,所以rect可以引用它。

而将其作为howToColor的参数就错了,因为lambda和参数类型不匹配。


查看完整回答
反对 回复 2017-11-24
?
产品经理不是经理

TA贡献481条经验 获得超143个赞

//Lambda表达式
Colorable rect = n -> System.out.println(n);


查看完整回答
反对 回复 2017-11-28
  • 2 回答
  • 1 关注
  • 2590 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信