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方法的接口