java函数式编程 示例

it2025-11-04  3

1. 函数式接口声明

接口中只能有一个抽象方法@FunctionalInterface 注解不是必须的,但加上它后,如果出现两个或两个以上的抽象方法时编译器会检测错误 @FunctionalInterface public interface FunInterface { /** * 测试方法 * @return */ public abstract String funTest(); }

2. 函数式编程 示例

public class FunctionalTest { public static void main(String[] a) { test(FunctionalTest::aaa); test(() -> { System.out.println("aaa"); return "aaa"; }); } private static void test(FunInterface funInterface) { System.out.println(funInterface.funTest()); } private static String aaa() { System.out.println("aaa"); return "aaa"; } } test接收接口类型 对象作为参数。jdk1.8后, 可以简写为传入一个方法。此方法将是函数式接口中唯一抽象方法的具体实现。

3. 示例

/** * @author 刘志强 * @date 2020/8/29 14:30 */ public class FunctionalTest { public static void main(String[] a) { // 不带参数的 test(FunctionalTest::aaa); test(() -> "bbb"); // 带参数的 FunctionalTest.testTwo(FunctionalTest::aaaTwo,"参数"); FunctionalTest.testTwo(data -> data,"参数2"); } private static void test(FunInterface funInterface) { System.out.println(funInterface.funTest()); } private static void testTwo(FunInterfaceTwo funInterfaceTwo,String str) { System.out.println(funInterfaceTwo.funTest(str)); } private static String aaa() { return "aaa"; } private static String aaaTwo(String str) { return str; } } @FunctionalInterface interface FunInterface { /** * 测试方法 * @return */ public abstract String funTest(); } @FunctionalInterface interface FunInterfaceTwo { /** * 测试方法 * @return */ public abstract String funTest(String str); } /** * @author 刘志强 * @date 2020/8/29 14:30 */ public class FunctionalTest { private String str; public FunctionalTest(String src) { this.str = src; } public static void main(String[] a) { FunctionalTest functionalTest = new FunctionalTest("你好"); FunInterfaceTwo funInterfaceTwo = new FunInterfaceTwoImpl(); functionalTest.testTwo(functionalTest::aaaTwo); functionalTest.testTwo(data -> { System.out.println(data); }); functionalTest.testTwo(funInterfaceTwo); } private void testTwo(FunInterfaceTwo funInterfaceTwo) { funInterfaceTwo.funTest(this.str); } private void aaaTwo(String str) { System.out.println(str); } } @FunctionalInterface interface FunInterfaceTwo { void funTest(String str); } class FunInterfaceTwoImpl implements FunInterfaceTwo { @Override public void funTest(String str) { System.out.println(str); } }
最新回复(0)