详解Java8中的Lambda表达式

Lambda是什么

Lambda表达式,也可称为闭包,是java8的新特性,作用是取代大部分内部类,优化java代码结构,让代码变得更加简洁紧凑。

Lambda的基本语法

 (expression)->expression 或 (expression)->{statements;}

Lambda最重要特点

用()->{}代码块替代匿名内部类

//(param)->expression;//(param)->statment;//(param)->{statments};//类型声明

MathOperation addition = (int a, int b) -> a + b;

//不用类型声明

MathOperation subtraction = (a, b) -> a - b;

例如:用lambda表达式实现Runable接口

//java8之前

new Thread(new Runable() {

@Override

public void run() {

System.out.println("hello");

}

}).start();

//java8之后

new Thread( ()->System.out.println("hello") ).start();

代替comparator接口内部类

//java8之前

Comparator<Person> comparator = new Comparator(){

public int compare(Person p1, Person p2) {

if (p1.getAge() > p2.getAge())

return -1;

.....

}

}

//java8之后

Comparator<Person> comparator = (Person p1, Person p2) -> {

if (p1.getAge() > p2.getAge())

return -1;

.....

}

是不是代码变得清爽了许多

Lambda表达式和匿名类的对比

1、this关键字:匿名类的this关键字指向匿名类,而Lambda表达式的关键字指向包围Lambda表达式的类;

2、编译方式:Java编译器将Lambda表达式编译成类的私有方法,使用了java7的invokedynamic字节码指令来动态绑定这个方法;

最后说一句,Lambda表达式和Java8的新特性Stream()一起使用会更香哦!

以上是 详解Java8中的Lambda表达式 的全部内容, 来源链接: utcz.com/z/360043.html

回到顶部