《Java基础知识》Java Lambda表达式

接触Lambda表达式的时候,第一感觉就是,这个是啥?我居然看不懂,于是开始寻找资料,必须弄懂它。

先来看一个案例:

​
@FunctionalInterface
public interface MyLamda {
    void test1(String y);
}



​
 
  
​
import demo.knowledgepoints.Lambda.inf.MyLamda;

public class LambdaTest {
    public static void main(String[] args) {
        MyLamda m = (y) ->{ System.out.println("ss"+y);};
        m.test1("s");
    }
}



​

运行结果:


非Lambda方式:

​



import demo.knowledgepoints.Lambda.inf.MyLamda;

public class MyLamdaIml implements MyLamda {
    @Override
    public void test1(String y) {
        System.out.println("ss"+y);
    }

    public static void main(String[] args) {
        MyLamdaIml myLamdaIml = new MyLamdaIml();
        myLamdaIml.test1("s");
    }
}


​

运行结果:

对比一下这两种方式:明显感觉使用Lambda表达式的更加简洁,由Java8引入,让我们一起来看看Lambda表达式的优点和不足。

1. Lambda表达式 语法:() -> {}; 通过上述案例我们看出,这个语法,就是替代了一个实现类和实现类中方法。

() 里面y为入参,{} 为方法体,类名被隐藏,方法名被隐藏。

2. Lambda表达式,接口(MyLamda)只能有且只有一个抽象方法。同时通过注解@FunctionalInterface可以做到编译的时候校验抽象方法,

不满足要求,给出编译报错。

3. (y) 可以写成 (String y),  {}里面可以省略 return。并且当方法中只有一行代码时,{} 也可以省略  ;() 里面只有一个参数() 也可以省略,

最简写法 y -> System.out.println("ss"+y);

知道Lambda表达式的概念,就要结合实际情况来使用。

案例:Java的Runable接口 有注解@FunctionalInterface。

​



@FunctionalInterface
public interface Runnable {
    /**
     * When an object implementing interface Runnable is used
     * to create a thread, starting the thread causes the object's
     * run method to be called in that separately executing
     * thread.
     * 

你可能感兴趣的:(java,java,开发语言,蓝桥杯)