Lanmd表达式04
Lamda表达式
- λ希腊字母表中排序第十一位的字母,英文名Lamda
- 避免匿名内部类定义过多
- 其实实质属于函数式编程的概念
(params) -> expression [表达式]
(params) ->statement [语句]
(params) ->{}
函数式接口
-
理解Functional Interface(函数式接口) 是学习java8 lambda表达式的关键所在。
-
函数式接口的定义:
-
- 任何接口,如果只包含唯一一个的抽象方法,那么它就是一个函数式接口。
public interface Runnable{ public abstract void run(); }- 对于函数式接口,可以通过lamda表达式来创建接口的对象。
- //总结lamda表达式中只有一行代码时才能简化花括号,只有一个参数的时候才能简化小括号
package com.cnblo.www.lamda;
//推导加简化lamda表达式
public class LamdaTest02 {
//静态类
static class Mylove02 implements Love{
@Override
public void loveFuncat(String a) {
System.out.println(" I love you 02!"+a);
}
}
public static void main(String args[]) {
Love ml01=new Mylove01();
ml01.loveFuncat("China");
ml01=new Mylove02();
ml01.loveFuncat("China");
//内部类
class Mylove03 implements Love{
@Override
public void loveFuncat(String a) {
System.out.println(" I love you 03!"+a);
}
}
ml01=new Mylove03();
ml01.loveFuncat("China");
//匿名内部类的方式
ml01=new Love() {
public void loveFuncat(String a) {
System.out.println(" I love you 04!"+a);
}} ;
ml01.loveFuncat("china");
//lamda表达式
ml01=(String a)-> {
System.out.println(" I love you 05!"+a);
}; ml01.loveFuncat("china");
//lamda表达式简化01 去掉参数类型
ml01=(a) -> {
System.out.println(" I love you 06!"+a);
};
ml01.loveFuncat("china");
//lamda表达式简化02 简化括号(多个参数时不能去掉括号)
ml01= a -> {
System.out.println(" I love you 07!"+a);
};
ml01.loveFuncat("china");
//lamda表达式简化03 去掉花括号
ml01= a ->
System.out.println(" I love you 08!"+a);
ml01.loveFuncat("china");
}
}
//以前的常用方式
class Mylove01 implements Love{
@Override
public void loveFuncat(String a) {
System.out.println(" I love you 01!"+a);
}
}
//函数式接口,只有一个抽象方法
interface Love{
public abstract void loveFuncat(String a) ;
}
/* I love you 01!China
I love you 02!China
I love you 03!China
I love you 04!china
I love you 05!china
I love you 06!china
I love you 07!china
I love you 08!china*/
浙公网安备 33010602011771号