0
点赞
收藏
分享

微信扫一扫

Lambda表达式

SDKB英文 2022-02-20 阅读 109

编写格式
当方法的形参是一个接口或抽象类对象时,可用匿名内部类作为实参传递,也可用Lambda表达式,格式如下:

// 假设一个形参为接口对象的方法
public static void inIt(Inter in){
	in.into();// in为Inter类型的接口对象
}

// 现在需要调用该方法 有两种方式:
public static void main(String[] args){
	// ①匿名内部类的编写格式
	inIt(new Inter(){
		@Override
		public void into(){
			// 方法体
		}
	});

	// ②Lambda表达式的编写格式
	inIt(()->{ /*方法体*/ });
}

上述两种方法达到的效果是一样的,
都是调用了inIt()方法并重写了into()方法被调用。

格式:(形式参数) - > {代码块}
形式参数:需要重写的方法中有多个参数用逗号隔开,没有留空即可。
" -> " :固定写法,代表指向动作。
代码块:方法的实现内容。

Lambda表达式使用前提
1.必须是接口。
2.接口中必须有且仅有一个抽象方法。

Lambda表达式的省略模式
1.参数类型可省略不写(若省略必须全省略),形参只有一个时 "( )“括号可省略,没有形参时”( )"括号不能省略。
2.方法体只有一条语句 "{ ;}"大括号和封号可省略。

Lambda表达式和匿名内部类的区别
1.前提条件不同:匿名内部类可操作接口,抽象类,具体类。而Lambda表达式只能操作接口。
2.使用限制不同:若接口中只有一个抽象方法,Lambda表达式和匿名内部类均可使用。若接口中有多个抽象方法,则只能使用匿名内部类。
3.实现原理不同:匿名内部类编译后会单独生成一个.class字节码文件存在于硬盘中。而Lambda表达式不会单独生成.class字节码文件,而是随着运行时动态生成.class字节码文件,且不会存在于硬盘中。

举报

相关推荐

0 条评论