为什么C#事件比java简单多了?java也有像C#一样的委托

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 myFunction = (Integer value) -> {
            // 实现方法逻辑
            return String.valueOf(value);
        };

        // 使用函数式接口进行调用
        String result = myFunction.apply(5);
        System.out.println(result); // 输出为 "5"
    }
}
//定义一个函数式接口
@FunctionalInterface
interface MyFunction {
    R apply(T t);
}

在上面的示例中,我们首先创建了一个实现MyFunction函数式接口的Lambda表达式,并将其赋值给myFunction变量。然后,我们调用myFunctionapply方法,并传递一个整数参数5,最后将返回的结果赋值给result变量并输出。该示例中的函数式接口接收一个整数参数,并将其转换为字符串返回。

这个调用示例展示了函数式接口的用法,类似于委托的功能。通过定义函数式接口,并使用Lambda表达式或方法引用来实现其抽象方法,我们可以创建类似于C#中的委托的功能。

 

 

 

 可以多个参数

package util;

public class DelegateTest {
    public static void main(String[] args) {
        // 创建一个函数式接口的实现
        MyFunction myFunction = (Integer value) -> {
            // 实现方法逻辑
            return String.valueOf(value);
        };
        // 使用函数式接口进行调用
        System.out.println( myFunction.apply(5)); // 输出为 "5"




        // 创建一个函数式接口的实现
        MyFunction2 myFunction2 = (Integer s1,Integer s2) -> {
            // 实现方法逻辑
            return s1+s2;
        };
        // 使用函数式接口进行调用
        System.out.println(myFunction2.apply(5,6));// 输出为 "11"
    }
}
//定义一个函数式接口 一个参数
@FunctionalInterface
interface MyFunction {
    R apply(T t);
}

//定义一个函数式接口  两个参数 一个返回值
@FunctionalInterface
interface MyFunction2 {
    R apply(T t,A t2);
}

你可能感兴趣的:(c#,java,开发语言)