Java Lambda表达式详解——演化过程
8种写法,详解Lambda表达式怎么来的
注意:
1,lambda有一行代码的情况下,才能简化成一行,如果多行,则用代码块包装 2,前提是接口为函数式接口 3,多个参数也可以去掉参数,要去掉就要都去掉,必须加上括号
package com.chenxb.myLambda;
public class MyLambda {
public static void main(String[] args) {
//第一种写法,通过实现类
Dog dog = new Dog();
dog.setName("inplements");
//第二种写法,通过实现类,简化
new Dog().setName("implements2");
//第三种写法,匿名内部类
IAnimal iAnimal = new IAnimal() {
@Override
//这是匿名内部类当中的方法,重写了抽象类的方法
public void setName(String name) {
System.out.println(name);
}
};
iAnimal.setName("anonymous");
//第四种写法,匿名内部类,再简化
new IAnimal() {
@Override
//这是匿名内部类当中的方法,重写了抽象类的方法
public void setName(String name) {
System.out.println(name);
}
}.setName("anonymous2");
//第五种写法,lambda
IAnimal iAnimalLambda = (String name) -> {
System.out.println(name);
};
iAnimalLambda.setName("lambda");
//第五种写法,lambda,去掉参数类型
IAnimal iAnimalLambda2 = (name) -> {
System.out.println(name);
};
iAnimalLambda2.setName("lambda2");
//第六种写法,lambda,去掉括号
IAnimal iAnimalLambda3 = name -> {
System.out.println(name);
};
iAnimalLambda3.setName("lambda3");
//第六种写法,lambda,去掉中括号
IAnimal iAnimalLambda4 = name -> System.out.println(name);
iAnimalLambda4.setName("lambda4");
//第七种写法,lambda,代码块
IAnimal iAnimalLambda5 = name -> {
System.out.println(name);
System.out.println(name);
};
iAnimalLambda5.setName("lambda5");
//第八种写法,lambda,多个参数可以去掉参数类型,要同时去掉
IPeople iPeople = (name,age) -> System.out.println(name + " " + age);
iPeople.setName("lambda more para",18);
/*注意:
1,lambda有一行代码的情况下,才能简化成一行,如果多行,则用代码块包装
2,前提是接口为函数式接口
3,多个参数也可以去掉参数,要去掉就要都去掉,必须加上括号
*/
}
}
interface IPeople {
public abstract void setName(String name, int age);
}
class Man implements IPeople {
@Override
public void setName(String name, int age) {
System.out.println(name + " " + age);
}
}
interface IAnimal {
public abstract void setName(String name);
}
class Dog implements IAnimal {
@Override
public void setName(String name) {
System.out.println(name);
}
}
上一篇:
IDEA上Java项目控制台中文乱码
