(1)使用条件
函数式接口:
接口有且仅有一个抽象方法才能使用lambad表达式。
函数式接口是指,有且仅有一个抽象方法的接口。
Java8引入了注解@FunctionalInterface修饰函数式接口的,要求接口中的抽象方法只有一个。
(2)进化过程
package com.szkingdom.lofta.acctclear.service.impl;
public class TestLamabda {
public static void main(String[] args) {
Ilike like = new test1();
like.Lambda();
like = new test2();
like.Lambda();
//3、局部内部类
class test3 implements Ilike{
@Override
public void Lambda() {
System.out.println("局部内部类Lambda");
}
}
like = new test3();
like.Lambda();
//4、匿名内部类
like = new Ilike() {
@Override
public void Lambda() {
System.out.println("匿名内部类Lambda");
}
};
like.Lambda();
//最终实现
like = ()->{
System.out.println("Lambda");
};
}
//2、静态内部类
static class test2 implements Ilike{
@Override
public void Lambda() {
System.out.println("静态内部类Lambda");
}
}
}
interface Ilike{
void Lambda();
}
//1、接口实现类
class test1 implements Ilike{
@Override
public void Lambda() {
System.out.println("实现类Lambda");
}
}
(3)如果有参数
//一个参数
like = a->{
System.out.println("实现类Lambda"+a);;
System.out.println("实现类Lambda"+a);
};
//两个参数
like = (a,b)->{
System.out.println("实现类Lambda"+a);;
System.out.println("实现类Lambda"+b);
};