Java SE 8的一个重要增加是lambda表达式功能。使用表达式可以清晰简洁地表达方法接口。集合库非常有帮助。集合可以被迭代、过滤和提取数据以实现有用的目的。为了实现函数式接口,广泛使用lambda表达式。它节省了很多代码。Lambda表达式允许我们在不重新定义方法的情况下提供实现。只有在此处通过编写代码才会形成实现代码。编译器不会创建一个.class文件,因为Java lambda表达式被视为函数。
功能接口
@FunctionalInterface是一个Java注解,它将一个接口声明为函数式接口。函数式接口是只有一个抽象方法的接口。Lambda表达式可以让你实现这个函数式接口。
为什么使用Lambda表达式?
-
它提供了功能接口的实现。
-
它提供了更少的编码。
Java Lambda表达式语法
(argument-list)
{
//body
}
登录后复制
它由三个组成部分组成−
-
Argument-List − 可以为空,也可以是非空的
-
Arrow-Taken − 用于将参数列表和表达式的主体连接起来
-
Body − 包含lambda表达式的表达式和语句
无参数语法
()
{
// body of no parameter lambda
}
登录后复制
一个参数语法
(p1)
{
// body of single parameter lambda
}
登录后复制
两个参数语法
(p1,p2)
{
//body of multiple parameter lambda
}
登录后复制
示例:Java Lambda 表达式
@FunctionalInterface //It is optional
interface Drawable{
public void draw();
}
public class LambdaExpressionExample2 {
public static void main(String[] args) {
int width=10;
//with lambda
Drawable d2=()->{
System.out.println("Drawing "+width);
};
d2.draw();
}
}
登录后复制
输出
Drawing 10
登录后复制登录后复制
示例:没有使用Lambda表达式
interface Drawable{
public void draw();
}
public class LambdaExpressionExample {
public static void main(String[] args) {
int width=10;
//without lambda, Drawable implementation using anonymous class
Drawable d=new Drawable(){
public void draw(){System.out.println("Drawing "+width);}
};
d.draw();
}
}
登录后复制
输出
Drawing 10
登录后复制登录后复制
示例:无参数
interface Sayable{
public String say();
}
public class LambdaExpressionExample3{
public static void main(String[] args) {
Sayable s=()->{
return "Don’t settle for average.";
};
System.out.println(s.say());
}
}
登录后复制
输出
Don’t settle for average
登录后复制
示例:单个参数
interface Sayable {
public String say(String name);
}
public class LambdaExpressionExample4{
public static void main(String[] args) {
// Lambda expression with single parameter.
Sayable s1=(name)->{
return "Hello, "+name;
};
System.out.println(s1.say("World"));
// You can omit function parentheses
Sayable s2= name ->{
return "Hello, "+name;
};
System.out.println(s2.say("World"));
}
}
登录后复制
输出
Hello, World
Hello, World
登录后复制
示例:多个参数
interface Addable{
int add(int a,int b);
}
public class LambdaExpressionExample5{
public static void main(String[] args) {
// Multiple parameters in lambda expression
Addable ad1=(a,b)->(a+b);
System.out.println(ad1.add(20,20));
// Multiple parameters with data type in lambda expression
Addable ad2=(int a,int b)->(a+b);
System.out.println(ad2.add(200,200));
}
}
登录后复制
输出
40
400
登录后复制
结论
使用表达式,Java SE 8通过lambda表达式功能提供了一个有价值的补充。以清晰简洁的方式表达方法接口已经变得轻而易举。迭代、过滤和提取数据是集合库提供的许多实际用途之一。实现函数接口已经广泛使用了lambda表达式,并且它能够大大减少代码量。lambda表达式的一个优秀特性是能够在不冗余地重新定义方法的情况下给出实现。在这个空间中,编写给予实现代码形式。编译器不会创建一个.class文件,因为函数被视为Java的lambda表达式。
以上就是使用Lambda表达式的并发编程方法的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!