乐趣区

函数式接口的基本使用


package com.itheima.demo01.FunctionalInterface;
/*

 函数式接口的使用: 一般可以作为方法的参数和返回值类型 

*/
public class Demo {

// 定义一个方法, 参数使用函数式接口 MyFunctionalInterface
public static void show(MyFunctionalInterface myInter){myInter.method();
}

public static void main(String[] args) {
    // 调用 show 方法, 方法的参数是一个接口, 所以可以传递接口的实现类对象
    show(new MyFunctionalInterfaceImpl());

    // 调用 show 方法, 方法的参数是一个接口, 所以我们可以传递接口的匿名内部类
    show(new MyFunctionalInterface() {
        @Override
        public void method() {System.out.println("使用匿名内部类重写接口中的抽象方法");
        }
    });

    // 调用 show 方法, 方法的参数是一个函数式接口, 所以我们可以 Lambda 表达式
    show(()->{System.out.println("使用 Lambda 表达式重写接口中的抽象方法");
    });

    // 简化 Lambda 表达式
    show(()-> System.out.println("使用 Lambda 表达式重写接口中的抽象方法"));
}

}
package com.itheima.demo01.FunctionalInterface;
/*

 函数式接口: 有且只有一个抽象方法的接口, 称之为函数式接口
当然接口中可以包含其他的方法 (默认, 静态, 私有)

@FunctionalInterface 注解
作用: 可以检测接口是否是一个函数式接口
    是: 编译成功
    否: 编译失败 (接口中没有抽象方法抽象方法的个数多余 1 个)

*/
@FunctionalInterface
public interface MyFunctionalInterface {

// 定义一个抽象方法
public abstract void method();

}
package com.itheima.demo01.FunctionalInterface;
/*

@Override 注解
检查方法是否为重写的方法
    是: 编译成功
    否: 编译失败 

*/
public class MyFunctionalInterfaceImpl implements MyFunctionalInterface{

@Override
public void method() {}

/*@Override
public void method2() {}*/

/*@Override
public void method3() {}*/

}

退出移动版