java8 Lambda表达式的使用

版权声明:支持原创,注明出处。 https://blog.csdn.net/qq_38584967/article/details/87217813

前言

lambda表达式表达更为简洁,但是效率并不比原来高,多用于多线程中简化频繁使用的匿名内部类函数。lambda表达式并非所有场景都适用。

正文

下面介绍Lambda的使用,首先定义一个接口:

interface ILike{
    void lambda();
}

作为比较,首先先介绍其他的方式实现接口,首先建一个测试类,其中分别实现接口:

public class LambdaTest_1 {
    /**
     * 静态内部类
     */
    static class Like2 implements ILike{
        @Override
        public void lambda() {
            System.out.println("Hello Lambda2");
        }
    }

    public static void main(String[] args) {
        //引用外部类
        ILike like = new Like();
        like.lambda();
        //静态内部类
        ILike like2 = new Like2();
        like2.lambda();

        //局部内部类
        class Like3 implements ILike{
            @Override
            public void lambda() {
                System.out.println("Hello Lambda3");
            }
        }

        ILike like3 = new Like3();
        like3.lambda();

        //匿名内部类
        ILike like4 = new ILike(){
            @Override
            public void lambda() {
                System.out.println("Hello Lambda4");
            }
        };
        like4.lambda();

    }
}

interface ILike{
    void lambda();
}

/**
 * 外部类
 */
class Like implements ILike{
    @Override
    public void lambda() {
        System.out.println("Hello Lambda");
    }
}

实现了常见的几种接口实现方式并调用了接口方法,这里看到匿名内部类,我们通过匿名内部类来引出我们的lambda表达式简化匿名内部类:

	//匿名内部类
	ILike like4 = new ILike(){
	    @Override
	    public void lambda() {
	        System.out.println("Hello Lambda4");
	    }
	};
	like4.lambda();
	//简化为Lambda表达式
    ILike like5 = () -> {
        System.out.println("Hello Lambda5");
    };
    like5.lambda();

看到lambda表达式省略了new ILike,直接表达为()->{…},括号里面也省略了重写方法的方法名,直接写实现的方法体。可以得出, lambda对只有一个内部方法的接口进行简化,使得代码更简洁可观。

当然,lambda也能传递参数:

interface ILove{
    int lambda(int a);
}
/**
 * Lambda表达式
 */
ILove love5 = (a) -> {
    return a;
};
/**
 * 最简化的形态,参数只有一个,可以省略参数括号,
 * 实现方法语句只有一句时省略大括号,个人认为没必要,保持上面的一般写法就行了。
 */
ILove love6 = a -> a;

Lambda用于线程
new Thread(() -> {
	System.out.println("努力学习,天天向上");
	...
}).start();
 //多线程使用Lambda表达式
 new Thread(() -> System.out.println("努力学习,天天向上")).start();

Lambda表达就介绍这么多,其实并不复杂,实在不能一步到位,可以先参照最上面,先用其他方式实现接口,然后一步步的对比简化,最后就得到了lambda表达式的书写。

猜你喜欢

转载自blog.csdn.net/qq_38584967/article/details/87217813