码迷,mamicode.com
首页 > 编程语言 > 详细

java之Lambda表达式

时间:2019-08-29 13:24:28      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:变量   列表   interface   lam   介绍   ret   不同   代码块   inter   

一、Lambda表达式入门

我们先来看一段代码:匿名内部类的方式实现参数的传递

interface Command{
	public abstract void test();
}

public class CommandTest {
	
	public void show(Command c) {
		c.test();
	}
	
	public static void main(String[] args) {
		CommandTest ct=new CommandTest();
		
		ct.show(new Command() {
			
			@Override
			public void test() {
				System.out.println("Command测试");
			}
		});
	}

}

 

interface Command{
	public abstract void test();
}

public class CommandTest {
	
	public void show(Command c) {
		c.test();
	}
	
	public static void main(String[] args) {
		CommandTest ct=new CommandTest();
		
		ct.show(()->{System.out.println("Lambda表达式入门测试");});//Lambda表达式实现参数传递
} }

  

上面的一段代码和之前的除了参数传递方式不同,其他都一样,第一段代码用匿名内部类的方式实现参数传递,第二段代码用Lambda表达式实现参数传递。

我们会发现使用Lambda表达式实现参数传递会简洁很多,少写了很多代码,却可以实现同样的功能。

 

二、Lambda表达式详细介绍:

Lambda表达书由三部分组成:

1、形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。

2、箭头(->),必须由英文中画线和大于号组成

3、代码块。如果代码块只包含一条语句, Lambda表达式允许省略代码块的花括号,那么这条语句就不要用花括号表示语句结束。 Lambda代码块只有一条 retur语句,甚至可以省略 return关键字。 Lambda表达式需要返回值,而它的代码块中仅有一条省略了 return的语句, Lambda表达会自动返回这条语句的值。

 

Lambda表达式与函数式接口:

Lambda表达式的类型,也称为“目标类型”,Lambda表达式的类型必须是函数式接口,函数式接口就是只能拥有一个抽象方法的接口。函数式接口可以包含多个默认方法和类方法,但只能有一个抽象方法。

 

Lambda表达式与匿名内部类的区别:

1、Lambda表达式与匿名内部类一样,都可以直接访问“ effectively final”的局部变量,以及外部类的成员变量(包括实例变量和类变量)。

2、Lambda表达式创建的对象与匿名内部类生成的对象一样,都可以直接调用从接口中继承的默认方法

3、

 

java之Lambda表达式

标签:变量   列表   interface   lam   介绍   ret   不同   代码块   inter   

原文地址:https://www.cnblogs.com/wgblog-code/p/11429106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!