美文网首页Java
2018-10-19 分分钟教会你使用Lambda表达式

2018-10-19 分分钟教会你使用Lambda表达式

作者: Albert陈凯 | 来源:发表于2018-10-19 16:12 被阅读84次

    Java 中使用 Lambda表达式
    Lambda的作用
    Lambda表达式的作用主要是用来简化接口的创建,interface。
    需要注意的是:
    1.任何需要使用interface的地方都可以使用Lambda表达式来简化;
    2.Lambda表达式不能够简化类或者抽象类得创建,如果试图使用Lambda表达式去创建一个类或者抽象类
    将会报错如下英文信息 ”Target type of a lambda conversion must be an interface“
    这就是为什么Lambda表达式只用用来简化创建接口

    Java中的Interface
    Lambda表达式既然是用来简化创建接口的,那么就先看看接口里面都包含些什么

    1.接口中可以定义public static final 的常量
    2.接口中可以定义多个public的方法
    一个接口就包含上面两方面的内容,不会再有其他的东西了
    但是这里Lambda表达式只能用来简化仅包含一个public方法的接口,也就是说,如果一个接口中包含了多个public方法,那么就不能够使用Lambda表达式进行创建

    现在知道了Lambda表达式只能用来简化仅包含一个public方法的接口的创建,现在就具体说如何使用Lambda表达式
    无论如何,这个接口中的方法都会以一下的6种形式中的一种出现

    1.返回值为void,没有参数
    2.返回值为void,有一个参数
    3.返回值为void,有多个参数
    4.有返回值,没有参数
    5.有返回值,有一个参数
    6.有返回值,有多个参数
    现在分别就6种情况给出写法

    public interface In {
    void func();
    }

    In in1 = ()->{};//这基本上最简单的Lambda表达式的写法了,实现的方法将什么都不会做
    In in2 = ()->System.out.println("Func");//这里实现的方法将会输出一个字符串
    In in3 = ()->{
    System.out.println("Func1");
    System.out.println("Func2");
    };//使用{}来使用多个语句

    public interface In {
    void func(int a);
    }

    In in = a->System.out.println(a);
    In in = (a)->{};

    public interface In {
    void func(int a,int b,int c);
    }

    In in = (a,b,c)->{
    //写入语句
    };

    public interface In {
    int func();
    }

    In in = ()->2;
    In in1 = ()->{return 2;};

    public interface In {
    int func(int a);
    }

    In in = a->a+1;
    In in2 = a -> {
    return a+1;
    };

    public interface In {
    int func(int a,int b,int c);
    }

    In in = (a,b,c)->a+b+c;
    In in1 = (a,b,c)->{
    return a+b+c;
    };

    掌握了上面这几种情形,现在就拿一些试试,比如说常见的开启子线程,常规代码是这样的

    new Thread(new Runnable() {
    @Override
    public void run() {
    //do something
    }
    }).start();

    这里就可以使用Lambda来简化上面的写法

    new Thread(()->{
    //do something
    }).start();

    之所以可以这样写,就是因为Runnable是一个只有一个run方法的接口

    所以要记住:所有使用接口的地方都可以Lambda表达式来进行简化,只是一个简单的替换而已。

    作者:ylqhust
    来源:CSDN
    原文:https://blog.csdn.net/ylqhust/article/details/50822955
    版权声明:本文为博主原创文章,转载请附上博文链接!

    相关文章

      网友评论

        本文标题:2018-10-19 分分钟教会你使用Lambda表达式

        本文链接:https://www.haomeiwen.com/subject/eoxuzftx.html