背景
JDK8新特性,简化代码
前提条件
必须是函数式接口
什么是函数式接口?
接口中有且只有一个抽象方法
interface ILove{
void love(int a);
}
推导过程
1、外部类实现接口
外部类: 在本类之外的类
package com.wei.lambda;
/**
* @author: wei
* @date 2022/5/4 14:35
* 说明:
**/
public class TestLambda {
public static void main(String[] args) {
Love love = new Love();
love.love(520);
}
}
interface ILove{
void love(int a);
}
class Love implements ILove{
@Override
public void love(int a) {
System.out.println("i love " + a);
}
}
2、静态内部类实现接口
静态内部类: 在本类的内部,方法的外部的类
package com.wei.lambda;
/**
* @author: wei
* @date 2022/5/4 14:35
* 说明:
**/
public class TestLambda {
// 静态内部类
static class Love implements ILove{
@Override
public void love(int a) {
System.out.println("i love " + a);
}
}
public static void main(String[] args) {
Love love = new Love();
love.love(520);
}
}
interface ILove{
void love(int a);
}
3、局部内部类实现接口
局部内部类: 在方法内部的类
package com.wei.lambda;
/**
* @author: wei
* @date 2022/5/4 14:35
* 说明:
**/
public class TestLambda {
public static void main(String[] args) {
// 局部内部类
class Love implements ILove{
@Override
public void love(int a) {
System.out.println("i love " + a);
}
}
Love love = new Love();
love.love(520);
}
}
interface ILove{
void love(int a);
}
4、匿名内部类实现接口
匿名内部类: new 接口并重写方法,看不见属于哪个类
package com.wei.lambda;
/**
* @author: wei
* @date 2022/5/4 14:35
* 说明:
**/
public class TestLambda {
public static void main(String[] args) {
// 匿名内部类
ILove love = new ILove() {
@Override
public void love(int a) {
System.out.println("i love " + a);
}
};
love.love(520);
}
}
interface ILove{
void love(int a);
}
5、简化为Lambda
package com.wei.lambda;
/**
* @author: wei
* @date 2022/5/4 14:35
* 说明:
**/
public class TestLambda {
public static void main(String[] args) {
// 简化为Lambda
ILove love = (int a) -> {
System.out.println("i love " + a);
};
love.love(520);
}
}
interface ILove {
void love(int a);
}
6、Lambda 简化
package com.wei.lambda;
/**
* @author: wei
* @date 2022/5/4 14:35
* 说明:
**/
public class TestLambda {
public static void main(String[] args) {
// Lambda 简化
ILove love = (a) -> {
System.out.println("i love " + a);
};
love.love(520);
}
}
interface ILove {
void love(int a);
}