From 9774ac3f0b7a598016050e72059e312776b27c44 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Sat, 8 Aug 2026 11:14:17 +0800 Subject: [PATCH] =?UTF-8?q?s-day07-=E5=87=BD=E6=95=B0=E5=BC=8F=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=9A=84=E4=BD=BF=E7=94=A8=EF=BC=88=E5=B0=86lambda?= =?UTF-8?q?=E4=BD=9C=E4=B8=BA=E5=AE=9E=E7=8E=B0=E7=B1=BB=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inmind/functional_interface02/Demo04.java | 65 +++++++++++++++++++ .../inmind/functional_interface02/Demo05.java | 4 ++ ...erface.java => MyFunctionalInterface.java} | 8 +-- 3 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 s-day07/src/com/inmind/functional_interface02/Demo05.java rename s-day07/src/com/inmind/functional_interface02/{MyIFunctionalnterface.java => MyFunctionalInterface.java} (56%) diff --git a/s-day07/src/com/inmind/functional_interface02/Demo04.java b/s-day07/src/com/inmind/functional_interface02/Demo04.java index 6a201e4..bf469f5 100644 --- a/s-day07/src/com/inmind/functional_interface02/Demo04.java +++ b/s-day07/src/com/inmind/functional_interface02/Demo04.java @@ -10,6 +10,71 @@ package com.inmind.functional_interface02; 扩展:为何在一个接口中某些抽象方法不需要被重写?? 在一个类中如果单继承和多实现,单继承的方法优先级高于接口中的方法定义,导致父类方法中 如果有跟接口中重名的方法实现的话,那么就相当于在子类中默认重写了接口的方法 +----------------------------------------------- +函数式接口的使用: +函数式接口可以作为 + 参数类型 + 返回值类型 + 变量类型 + +其实就是将lambda表达式作为函数式接口的实现类对象 + */ public class Demo04 { + //函数式接口作为返回值类型 + public static void main(String[] args) { + //获取一个函数式接口对象 + MyFunctionalInterface impl = getInterface(); + int value = getValue(impl, 10, 2); + System.out.println(value); + } + + + + public static MyFunctionalInterface getInterface(){ + //变量类型 + /*MyFunctionalInterface impl = new MyFunctionalInterface() { + @Override + public int getValue(int a, int b) { + return a-b; + } + };*/ + + //变量类型 + /*MyFunctionalInterface impl = (int a, int b)->{ + return a-b; + };*/ + +// MyFunctionalInterface impl = ( a, b)-> a-b; + + + return ( a, b)-> a-b; + } + + + + + + + + //--------------------------------------------------------------------------------- + //函数式接口作为参数类型 + public static void method1(String[] args) { + /*int result = getValue(new MyIFunctionalnterface() { + @Override + public int getValue(int a, int b) { + return a+b; + } + },10,2);*/ +// int result = getValue((a, b) -> a + b, 10, 2); + int result = getValue((int a, int b) -> {return a + b;}, 10, 2); + + System.out.println(result); + } + + //接口回调:将我们的业务逻辑嵌入到源码方法中 + public static int getValue(MyFunctionalInterface impl, int x, int y){ + int result = impl.getValue(x, y); + return result; + } } diff --git a/s-day07/src/com/inmind/functional_interface02/Demo05.java b/s-day07/src/com/inmind/functional_interface02/Demo05.java new file mode 100644 index 0000000..a50283c --- /dev/null +++ b/s-day07/src/com/inmind/functional_interface02/Demo05.java @@ -0,0 +1,4 @@ +package com.inmind.functional_interface02; + +public class Demo05 { +} diff --git a/s-day07/src/com/inmind/functional_interface02/MyIFunctionalnterface.java b/s-day07/src/com/inmind/functional_interface02/MyFunctionalInterface.java similarity index 56% rename from s-day07/src/com/inmind/functional_interface02/MyIFunctionalnterface.java rename to s-day07/src/com/inmind/functional_interface02/MyFunctionalInterface.java index efef907..696dd8c 100644 --- a/s-day07/src/com/inmind/functional_interface02/MyIFunctionalnterface.java +++ b/s-day07/src/com/inmind/functional_interface02/MyFunctionalInterface.java @@ -1,13 +1,13 @@ package com.inmind.functional_interface02; @FunctionalInterface -public interface MyIFunctionalnterface { +public interface MyFunctionalInterface { // void method(); // void method(int a); // int method(int a); - int method(); + int getValue(int a,int b); - boolean equals(Object obj); + /*boolean equals(Object obj); String toString(); - int hashCode(); + int hashCode();*/ }