简化过程
- 外部类
//创建函数式接口 只有一个方法
interface test01{
void love();
}
//外部实现类
class Person implements test01{
@Override
public void love() {
System.out.println("测试1");
}
}
//写在main()中
//测试
Person person = new Person();
person.love();
- 内部类 写在方法外,
//内部类
static class Person implements test01{
@Override
public void love() {
System.out.println("测试2");
}
}
//写在main()中
//测试
Person person = new Person();
person.love();
- 局部内部类 写在方法内
//写在main()中
//局部内部类
class Person implements test01 {
@Override
public void love() {
System.out.println("测试3");
}
}
//测试
Person person = new Person();
person.love();
4. 匿名内部类
//写在main()中
//匿名内部类 需要借助接口或者父类实现
test01 test01 = new test01() {
@Override
public void love() {
System.out.println("匿名内部类");
}
};
//测试
test01.love();
- 简化为labmda表达式形式
//简化为labmda表达式形式 若方法体中只有一行代码 花括号可以去除
test01 test02 = ()->{
System.out.println("labmda");
};
//test01 test02 = ()->System.out.println("labmda");
test02.love();
注:
- 方法中也可以传递参数,参数类型也可以省略,但是如果省略, 所有的类型 全部省略
- labmda表达式适用于函数式接口,即接口中只有一个方法。
- 如果接口中的方法需要传递参数,且函数体只有一行代码,则可以简化为:
//接口
interface test02{
void like(int a );
}
//main中测试
test02 test = a -> System.out.println("labmda"+a);//若有多行代码{}不可省略 a ->{};
test.like(2);//输出结果为labmda2