C#事件
public delegate void MyDel(string format);//声明一个自定义委托,相当于函数指针
public event MyAPI.MyDel Log; //定义一个事件
Log?.Invoke("Error:" + e.Message);//事件发出,即调用
cmd.Log += Log; //监听
private void Log(string log)
{
//事件处理
}
JAVA 自定义事件示例 java 事件与回调函数的区别_小黄人软件的博客-CSDN博客
java 函数式接口 给一个完整的调用示例
好的,下面是一个完整的Java函数式接口的调用示例:
package util; public class Main { public static void main(String[] args) { // 创建一个函数式接口的实现 MyFunction<Integer, String> myFunction = (Integer value) -> { // 实现方法逻辑 return String.valueOf(value); }; // 使用函数式接口进行调用 String result = myFunction.apply(5); System.out.println(result); // 输出为 "5" } } //定义一个函数式接口 @FunctionalInterface interface MyFunction<T, R> { R apply(T t); }
在上面的示例中,我们首先创建了一个实现
MyFunction
函数式接口的Lambda表达式,并将其赋值给myFunction
变量。然后,我们调用myFunction
的apply
方法,并传递一个整数参数5,最后将返回的结果赋值给result
变量并输出。该示例中的函数式接口接收一个整数参数,并将其转换为字符串返回。这个调用示例展示了函数式接口的用法,类似于委托的功能。通过定义函数式接口,并使用Lambda表达式或方法引用来实现其抽象方法,我们可以创建类似于C#中的委托的功能。
可以多个参数
package util;
public class DelegateTest {
public static void main(String[] args) {
// 创建一个函数式接口的实现
MyFunction<Integer, String> myFunction = (Integer value) -> {
// 实现方法逻辑
return String.valueOf(value);
};
// 使用函数式接口进行调用
System.out.println( myFunction.apply(5)); // 输出为 "5"
// 创建一个函数式接口的实现
MyFunction2<Integer, Integer,Integer> myFunction2 = (Integer s1,Integer s2) -> {
// 实现方法逻辑
return s1+s2;
};
// 使用函数式接口进行调用
System.out.println(myFunction2.apply(5,6));// 输出为 "11"
}
}
//定义一个函数式接口 一个参数
@FunctionalInterface
interface MyFunction<T, R> {
R apply(T t);
}
//定义一个函数式接口 两个参数 一个返回值
@FunctionalInterface
interface MyFunction2<T,A, R> {
R apply(T t,A t2);
}