jdk1.8引入的新写法,
避免匿名内部类定义过多
实质是函数,如(params)->expression[表达式]
任何接口,如果只包含一个抽象方法,那他就是一个函数式接口
如
public interface Runnable{ public abstract void run(); } 过程 //定义一个函数式接口 interface Like{ void lambda(); } //实现 class Ilike implements Like{ @Override public void lambda() { System.out.println("i like lambda"); } } //局部内部类 class Like3 implements Like{ @Override public void lambda() { System.out.println("like3"); } } Like like = new Like3(); like.lambda(); //匿名内部类 like = new Like() { @Override public void lambda() { System.out.println("like5"); } }; like.lambda(); //用lambda Like like1 = ()->{ System.out.println("I like lambda6"); }; like1.lambda(); //静态内部类 static class Like4 implements Like{ @Override public void lambda() { System.out.println("like4"); } }
这样我们的代码就更加简介了,去掉了没有意义的代码,留下了核心逻辑
然后是简化
interface Loves{ void love(String name); } Loves loves; loves = (String name)->{ System.out.println("I love youe," + name); }; loves.love("lgd"); //简化,去掉参数类型 Loves love = (name)->{ System.out.println("I love2"+name); }; //去掉括号 loves = name->{ System.out.println("I love3"+name); }; //去掉花括号 loves = name-> System.out.println("I loves4"+name); //最终版简化 Loves loves1 = name-> System.out.println("I love5" + name);
总结:
lambda表达式只能有一行代码情况下才可简化成为一行
多行就要用花括号,代码块
前提,接口为函数时接口,多个参数也可以去掉参数类型,当然
要去就都去掉
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)