当前位置 : 主页 > 编程语言 > java >

Java:函数式接口(Functional Interface)实现将函数作为方法参数传递

来源:互联网 收集:自由互联 发布时间:2023-02-04
1、函数式接口简介 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 使用场景:将函数作为方法参数传递 2、函数式接口案例 1、定义

1、函数式接口简介

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

使用场景:将函数作为方法参数传递

2、函数式接口案例

1、定义函数式接口

package com.example; // @FunctionalInterface注解 检查一个接口是否是一个函数式接口 @FunctionalInterface public interface MyFunctionInterface { void show(); }

2、使用函数式接口

package com.example; public class Demo { // 定义一个方法以函数式接口作参数 public static void test(MyFunctionInterface myFunctionInterface) { myFunctionInterface.show(); } public static void main(String[] args) { // 1.使用匿名内部类的方式 MyFunctionInterface myFunctionInterface = new MyFunctionInterface() { @Override public void show() { System.out.println("Hello 1"); } }; test(myFunctionInterface); // 2.直接传递匿名内部类 test(new MyFunctionInterface() { @Override public void show() { System.out.println("Hello 2"); } }); // 3.使用Lambda表达式的方式使用函数式接口 test(() -> System.out.println("hello 3")); } }

3、常用函数式接口

1、消费型接口

定义

// 有参无返回值 @FunctionalInterface public interface Consumer<T> { void accept(T t); }

示例

package com.example; import java.util.function.Consumer; public class Demo { // 定义一个方法以函数式接口作参数 public static void test(Consumer<Integer> consumer, Integer value) { consumer.accept(value); } public static void main(String[] args) { test((value) -> System.out.println(value), 20); // 20 } }

2、供给型接口

定义

// 无参有返回值 @FunctionalInterface public interface Supplier<T> { T get(); }

示例

package com.example; import java.util.function.Supplier; public class Demo { public static Integer test(Supplier<Integer> supplier) { return supplier.get(); } public static void main(String[] args) { Integer value = test(() -> 20); System.out.println(value); // 20 } }

3、函数型接口

定义

// 有参有返回值 @FunctionalInterface public interface Function<T, R> { R apply(T t); }

示例

package com.example; import java.util.function.Function; public class Demo { public static Integer test(Function<Integer, Integer> function, Integer value) { return function.apply(value); } public static void main(String[] args) { Integer value = test((x) -> x * 10, 2); System.out.println(value); // 20 } }

参考 java核心技术,函数式编程接口详解 Java 8 函数式接口

上一篇:js对input输入金额的校验
下一篇:没有了
网友评论