是的,C# 可以調用 Java 靜態方法。要實現這一點,您需要使用平臺調用(P/Invoke)技術。P/Invoke 允許您調用其他操作系統上的動態鏈接庫(DLL)中的函數。在這種情況下,您需要將 Java 的 DLL 導入到 C# 項目中,并調用其中的靜態方法。
以下是一個簡單的示例,說明如何在 C# 中調用 Java 的靜態方法:
MyJavaClass.java
的類,其中包含一個靜態方法 staticMethod
:public class MyJavaClass {
public static int staticMethod(int a, int b) {
return a + b;
}
}
javac
命令編譯 Java 類,然后使用 jar
命令創建 JAR 文件。例如:javac MyJavaClass.java
jar cvf my_java_class.jar MyJavaClass.class
將 JAR 文件添加到 C# 項目中。將生成的 my_java_class.jar
文件添加到 C# 項目的引用中。
在 C# 代碼中使用 P/Invoke 調用 Java 靜態方法。在 C# 類中,使用 DllImport
屬性導入 Java 的 DLL,并使用 CallStaticMethod
方法調用靜態方法。例如:
using System;
using System.Runtime.InteropServices;
public class MyCSharpClass {
[DllImport("jni1_64.dll")] // 根據您的 Java 版本和操作系統調整 DLL 名稱
private static extern int CallStaticMethod(string className, string methodName, int a, int b);
public static void Main() {
int result = CallStaticMethod("MyJavaClass", "staticMethod", 5, 3);
Console.WriteLine("Result: " + result); // 輸出 "Result: 8"
}
}
請注意,您可能需要根據您的 Java 版本和操作系統調整 DllImport
屬性中的 DLL 名稱。在這個例子中,我使用的是 Java 1.6 和 64 位操作系統。