lambda
- 函数式接口:实现1个接口,而且接口只有1个方法才能用
- lambda表达式只能有一行代码情况才能简化成一行;如果多行那么就用代码块包裹
- 前提是接口是函数式接口
- 多个参数也可以去掉参数类型,但是都要去掉,必须加括号
package Thread.Demo05;
/**
* lambda表达式推导
* 实现1个接口,而且接口只有1个方法才能用
*
* @author liu
*/
public class lambdaA {
//main方法
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
//4局部内部类
class Like3 implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda3");
}
}
like = new Like3();
like.lambda();
//5匿名内部类,没有类的名称,必须借助接口或者父类
like =new ILike() {
@Override
public void lambda() {
System.out.println("I like lambda4");
}
};
like.lambda();
//6,lambda简化
like = () -> System.out.println("I like lambda5");
like.lambda();
}
//3静态内部类
static class Like2 implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda2");
}
}
}
//1定义一个函数式接口
interface ILike {
void lambda();
}
//2实现类
class Like implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda1");
}
}
package Thread.Demo05;
/**lambda总结
//lambda表达式只能有一行代码情况才能简化成一行;如果多行那么就用代码块包裹
//前提是接口是函数式接口
//多个参数也可以去掉参数类型,但是都要去掉,必须加括号
* @author liu
*/
public class lambdaB {
public static void main(String[] args) {
//lambda简化
ILove love = (String what) -> {
System.out.println("I Love " + what);
};
love.Love("sun");
//lambda简化1,去参数类型
love = (what) -> {
System.out.println("I Love " + what);
};
love.Love("sun");
//lambda简化2,去括号
love = what -> {
System.out.println("I Love " + what);
System.out.println("I Love "+what +"too");
};
love.Love("sun");
//lambda简化2,去花括号
love = what -> System.out.println("I Love " + what);
love.Love("sun");
}
}
//定义只有1个方法的接口
interface ILove {
void Love(String what);
}