- 1 函数式接口
- 2 普通方式实现调用接口
- 3 使用静态内部类优化代码
- 4 使用局部内部类优化代码
- 5 使用匿名类优化代码
- 6 使用lambda表达式优化代码
- 7 带有参数的lambda表达式
只有一个函数的接口在java中称为函数式接口
interface TestLamddaImpl {
abstract void sayLambda();
}
这就是一个函数式接口
2 普通方式实现调用接口- 1 实现接口类
- 2 实例化类
- 3 通过实例调用接口的方法
public class TestLambda {
public static void main(String[] args) {
//创建一个实例
TestLamddaImpl testLamdClass = new TestLamdClass();
//调用实例的方法
testLamdClass.sayLambda();
}
}
// 2 实现接口类
class TestLamdClass implements TestLamddaImpl {
@Override
public void sayLambda() {
System.out.println("hello lambda");
}
}
// 1 实现接口
interface TestLamddaImpl {
abstract void sayLambda();
}
输出
hello lambda
Process finished with exit code 0
public class TestLambda {
public static void main(String[] args) {
TestLamddaImpl testLamdClass = new TestLamdClass();
testLamdClass.sayLambda();
}
// 实现静态内部类
static class TestLamdClass implements TestLamddaImpl {
@Override
public void sayLambda() {
System.out.println("hello lambda");
}
}
}
interface TestLamddaImpl {
abstract void sayLambda();
}
4 使用局部内部类优化代码
public class TestLambda {
public static void main(String[] args) {
// 将类定义在main方法内就是局部内部类
class TestLamdClass implements TestLamddaImpl {
@Override
public void sayLambda() {
System.out.println("hello lambda");
}
}
TestLamddaImpl testLamdClass = new TestLamdClass();
testLamdClass.sayLambda();
}
}
interface TestLamddaImpl {
abstract void sayLambda();
}
5 使用匿名类优化代码
public class TestLambda {
public static void main(String[] args) {
// 定义一个匿名局部内部类
TestLamddaImpl testLamdClass = new TestLamddaImpl(){
@Override
public void sayLambda() {
System.out.println("hello lambda");
}
};
testLamdClass.sayLambda();
}
}
interface TestLamddaImpl {
abstract void sayLambda();
}
6 使用lambda表达式优化代码
public class TestLambda {
public static void main(String[] args) {
TestLamddaImpl testLamdda = ()->{
System.out.println("hello lambda !!!");
};
testLamdda.sayLambda();
}
}
interface TestLamddaImpl {
abstract void sayLambda();
}
使用lambda 表达式代码精简很多
7 带有参数的lambda表达式public class TestLambda {
public static void main(String[] args) {
TestLamddaImpl testLamdda = (int a)->{ // a前面的int是可以省略的 括号也是可以省略的
// (a)->{statements;} 省略变量类型
// a-> {statements;} 省略前面小括号
// a-> "statement" 省略后面花括号
System.out.println("hello lambda !!!"+a);
};
testLamdda.sayLambda(1);
}
}
interface TestLamddaImpl {
abstract void sayLambda(int a);
}



