Java表达式lambda

      大纲

       一、lambda表达式介绍

        二、lambda表达式基本使用

 

      lambda表达式介绍

      lambda表达式是在JDK1.8提供出来的,用来简化传统编写开发中,接口中方法的调用处理。

       范例:观察问题

package cn.txp.lambda;
/*
 * 定义一个接口
 */
interface Lambdainfo{
    /*
     * 返回传递过来的值
     */
    void getMsg (String msg);
}
public class LambdaDemo1 {
    public static void main(String[] args) {
        Lambdainfo info = new Lambdainfo() {
            @Override
            public void getMsg(String msg) {
                System.out.println("传入的值:" + msg);
            }
        };
        info.getMsg("lambda表达式");
    }
}

 

      通过以上代码会发现,在Java中,接口中只允许声明而不允许实现,具体的实现需要交由其接口实现子类进行实现。但是还可以通过实例化匿名的接口来实现调用。以上就是通过匿名的接口来实现调用的。此时会发现只是简单的调用一个方法需要这个繁杂的代码编写,为了简化这样的开发。可以用lambda表达式来简化操作。

package cn.txp.lambda;
/*
 * 定义一个接口
 */
interface LambdaContent{
    /*
     * 返回传递过来的值
     */
    void getMsg (String msg);
}
public class LambdaDemo2 {
    public static void main(String[] args) {
        LambdaContent lc = (str) -> {System.out.println(str);};
        lc.getMsg("lambda表达式");
    }
}

 

      

      Lambda表达式基本使用

      Lambda表达式使用提供了几种格式:

       调用的方法没有参数: () ->{};

       调用的方法有参数:(参数, 参数) -> {};

       如果调用的方法只有一行语句返回:() -> 语句:

    

package cn.txp.lambda;
/*
 * 调用没有参数的方法
 */
interface Lambdainfo{
    void getMsg ();
}
public class LambdaDemo1 {
    public static void main(String[] args) {
        Lambdainfo li = () -> {
            System.out.println("lambda表达式");
        };
        li.getMsg();
    }
}

 

   

package cn.txp.lambda;
/*
 * 有参数方法
 */
@FunctionalInterface   // JDK1.8提供的注解,表示此时定义的接口为函数接口
interface Lambdainfo{
    /*
     * 返回传递过来的值
     */
    void getMsg (String msg);
}
public class LambdaDemo1 {
    public static void main(String[] args) {
        Lambdainfo li = (param) -> {System.out.println("传递过来的值:" + param);};
        li.getMsg("lambda表达式");
    }
}

 

 

       

package cn.txp.lambda;
/*
 * 定义一个接口
 */
@FunctionalInterface   // JDK1.8提供的注解,表示此时定义的接口为函数接口
interface Lambdainfo{
    int add(int paramone, int paramtow);
}
public class LambdaDemo1 {
    public static void main(String[] args) {
        Lambdainfo li = (p1, p2) -> {return p1 + p2;};
        System.out.println(li.add(10, 20));
        
        // 如果只有一条返回语句,可以省略{ }括号
        Lambdainfo lbi = (p1, p2) -> p1 + p2;
        System.out.println(lbi.add(10, 40));
    }
}

 

 

      

      知乎文章: https://www.zhihu.com/people/tan-xu-peng-44


      编程专业知识:https://www.cnblogs.com/tjava


      编程开发技术问题解决CSDN:https://blog.csdn.net/qq_37291829

 

posted @ 2020-09-16 10:29  谭旭鹏  阅读(166)  评论(0)    收藏  举报