溫馨提示×

c#調用java 能否實現回調

小樊
121
2024-11-29 13:55:50
欄目: 編程語言

是的,C# 可以調用 Java 并實現回調。為了實現這一點,你需要使用一個通用的接口來在 C# 和 Java 之間傳遞數據和方法。這里是一個簡單的示例,展示了如何使用 C# 調用 Java 類并使用回調:

  1. 首先,創建一個 Java 類,該類包含一個方法,該方法將作為回調傳遞給 C# 代碼:
// JavaClass.java
public class JavaClass {
    public interface Callback {
        void onResult(String result);
    }

    public void doSomething(Callback callback) {
        // 執行一些操作...
        String result = "Hello from Java!";
        callback.onResult(result);
    }
}
  1. 編譯 Java 類并生成一個 JAR 文件:
javac JavaClass.java
jar cvf JavaClass.jar JavaClass.class
  1. 在 C# 代碼中,使用 Java.Interop 庫加載 Java 類并調用其方法。首先,確保在項目中添加了 Java.Interop NuGet 包。然后,創建一個回調接口并在 C# 代碼中使用它:
using System;
using Java.Interop;

// 定義一個與 Java 回調接口相對應的 C# 接口
public interface ICallback {
    void OnResult(string result);
}

public class Program {
    public static void Main() {
        // 加載 Java 類
        var env = JniEnvironment.Create();
        var clazz = env.FindClass("JavaClass");

        // 創建 Java 對象
        var javaObject = env.NewObject(clazz, "JavaClass");

        // 創建 C# 回調對象
        ICallback callback = new CallbackImpl();

        // 將 C# 回調對象傳遞給 Java 方法
        env.CallVoidMethod(javaObject, "doSomething", callback);

        // 在 C# 中處理回調結果
        callback.OnResult("Hello from Java!");
    }
}

// 實現 C# 回調接口
public class CallbackImpl : ICallback {
    public void OnResult(string result) {
        Console.WriteLine($"Callback result: {result}");
    }
}

在這個示例中,我們首先創建了一個 Java 類 JavaClass,其中包含一個回調接口 Callback。然后,我們在 C# 中創建了一個與 Java 回調接口相對應的接口 ICallback,并實現了它。最后,我們加載了 Java 類,創建了一個 Java 對象,并將 C# 回調對象傳遞給 Java 方法。當 Java 方法完成執行時,C# 回調將被調用,我們可以在其中處理結果。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女