6、lamda表达式
lamda表达式:
1、避免匿名内部类过多
2、让代码简洁
3、去掉没有意义的代码,保留核心逻辑
函数式接口:只包含一个抽象方法,被成为函数式接口
package com.com.test;
import jdk.dynalink.beans.StaticClass;
/**
* 推导lambda表达式
*/
public class lambda {
public static void main(String[] args) {
//接口引用,指向Like类建立的对象
Ilike like = new Like1();
//调用接口实现类lambda方法
like.lambda();
//静态内部类
like = new like2();
//调用静态内部类lambda方法
like.lambda();
//4、局部内部类,在main方法中
class like3 implements Ilike{
@Override
public void lambda() {
System.out.println("this is lambda4");
}
}
like = new like3();
//调用局部内部类的lambda方法
like.lambda();
//5、匿名内部类,无类名,必须借助接口或父类实现
like = new Ilike() {
@Override
public void lambda() {
System.out.println("this is lambda5");
}
};//分号结尾
like.lambda();
//6、lambda表达式
like = ()->{
System.out.println("this is lambda6");
};//分号结尾
like.lambda();
}
//3、静态内部类实现
static class like2 implements Ilike{
@Override
public void lambda() {
System.out.println("this is lambda3");
}
}
}
//1、定义一个函数式接口
interface Ilike{
//抽象方法没有主体
void lambda();
}
//实现接口类
class Like1 implements Ilike{
@Override
public void lambda() {
System.out.println("this is lambda2");
}
}
简化
package com.com.test;
/**
* 推导lambda表达式
*
*/
public class lambda2 {
public static void main(String[] args) {
Ilove love = (int a)->{
System.out.println("this is lambda"+ a);
};
love.lambda(520);
//简化,取消括号和类型
love = a -> {
System.out.println("this is lambda"+ a);
};
love.lambda(521);
//简化,去掉花括号
love = a -> System.out.println("this is lambda"+ a);
love.lambda(1314);
/*
1、只有一行代码的时候,才能简化为一行
2、只有函数式接口,才能使用
3、多个参数类型也可以去掉,都去掉,必须加上括号
*/
}
}
//1、定义一个函数式接口
interface Ilove{
//抽象方法没有主体,带参数
void lambda(int a);
}
浙公网安备 33010602011771号