Java-函数式接口Lambda,注解的使用

有且只有一个抽象方法的接口。函数式接口适用于函数式编程,在java函数式编程的体现就是

Lambda:()->{}

特点:

延迟加载(解释:满足条件执行,不满足条件不执行,避免性能浪费)

 

定义格式:

修饰符 interface 接口名称{

Public abstract 返回值类型 方法名称(可选参数信息);

}

@FunctionalInterface注解的作用:

用来检测函数式接口是否正确,因为函数式接口只能有一个抽象方法,为了避免就用检测注解,成功后进行编译!

Lambda优化案例-代码详解(于普通拼接字符对比)

packagecn.itcast.Lambda;
publicclassDemo01Logger{
/*消耗内存的传递内容,if语句相同
publicstaticvoidshowLog(intlevel,Stringmessage){传递int类型的等级,日志信息
if(level==1){
	System.out.println(mb.builderMessage());
	}
*/
//使用函数式编程必须存在函数式接口
publicstaticvoidshowLog(intlevel,MessageBuildermb){//传递int类型的等级,接口
if(level==1){
	System.out.println(mb.builderMessage());
	}
}
publicstaticvoidmain(String[]args){
	Stringmsg1="Hellow";
	Stringmsg2="World";
	Stringmsg3="Java";
	/*消耗内存的输出,不管等级是否为一,下面的字符串都会进行拼接
	showLog(level:1,message:msg1+msg2+msg3);
	*/
	//如何等级不等于1,下面这段代码就不是执行;Lambda表达式用()->{}表示
	showLog(1,()->{
	returnmsg1+msg2+msg3;
	});
}
}

注解类代码:

packagecn.itcast.Lambda;
    @FunctionalInterface
    publicinterfaceMessageBuilder{
    publicabstractStringbuilderMessage();
}

函数式接口作为方法的参数

函数式接口作为方法的返回值类型

猜你喜欢

转载自blog.csdn.net/weixin_39332529/article/details/106362950
今日推荐