java8 lambda表达式

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表达式出错,求解释,该怎么写呢?

Leo_clip
浏览 2593回答 2
2回答

onemoo

lambda表达式本身没有错。但不应该将其放到16行的括号中。让rect直接引用这个lambda表达式就好了:Colorable rect = n -> System.out.println(n);因为lambda最终会转换为实现该接口的一个实例,所以rect可以引用它。而将其作为howToColor的参数就错了,因为lambda和参数类型不匹配。

产品经理不是经理

//Lambda表达式 Colorable rect = n -> System.out.println(n);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java