其他分享
首页 > 其他分享> > 6、lamda表达式

6、lamda表达式

作者:互联网

lamda表达式:

1、避免匿名内部类过多

2、让代码简洁

3、去掉没有意义的代码,保留核心逻辑

 

函数式接口:只包含一个抽象方法,被成为函数式接口

package com.com.test;

import jdk.dynalink.beans.StaticClass;

/**
 * 推导lambda表达式
 */
public class lambda {


    public static void main(String[] args) {
        //接口引用,指向Like类建立的对象
        Ilike like = new Like1();
        //调用接口实现类lambda方法
        like.lambda();

        //静态内部类
        like = new like2();
        //调用静态内部类lambda方法
        like.lambda();

        //4、局部内部类,在main方法中
        class like3 implements Ilike{
            @Override
            public void lambda() {
                System.out.println("this is lambda4");
            }
        }
        like = new like3();
        //调用局部内部类的lambda方法
        like.lambda();

        //5、匿名内部类,无类名,必须借助接口或父类实现
        like = new Ilike() {
            @Override
            public void lambda() {
                System.out.println("this is lambda5");
            }
        };//分号结尾
        like.lambda();

        //6、lambda表达式
        like = ()->{
            System.out.println("this is lambda6");
        };//分号结尾
        like.lambda();


    }
    //3、静态内部类实现
    static class like2 implements Ilike{
        @Override
        public void lambda() {
            System.out.println("this is lambda3");
        }
    }


}
//1、定义一个函数式接口
interface Ilike{
    //抽象方法没有主体
    void lambda();
}
//实现接口类
class Like1 implements Ilike{
    @Override
    public void lambda() {
        System.out.println("this is lambda2");
    }
}

  

简化

package com.com.test;

/**
 * 推导lambda表达式
 *
 */
public class lambda2 {


    public static void main(String[] args) {
        Ilove love = (int a)->{
            System.out.println("this is lambda"+ a);
        };
        love.lambda(520);
        //简化,取消括号和类型
        love = a -> {
            System.out.println("this is lambda"+ a);
        };
        love.lambda(521);

        //简化,去掉花括号
        love = a -> System.out.println("this is lambda"+ a);
        love.lambda(1314);
        /*
            1、只有一行代码的时候,才能简化为一行
            2、只有函数式接口,才能使用
            3、多个参数类型也可以去掉,都去掉,必须加上括号
         */
    }

}

//1、定义一个函数式接口
interface Ilove{
    //抽象方法没有主体,带参数
    void lambda(int a);
}

  

标签:lamda,like,void,System,println,out,表达式,lambda
来源: https://www.cnblogs.com/tfqfdr/p/16482665.html