是的,C++ 可以調用 Java 的靜態方法。為了實現這一目標,你需要使用 JNI (Java Native Interface)。JNI 是 Java 提供的一種標準接口,允許本地代碼(如 C++)與 Java 代碼進行交互。
以下是一個簡單的示例,展示了如何使用 C++ 調用 Java 的靜態方法:
// MyClass.java
public class MyClass {
public static int add(int a, int b) {
return a + b;
}
}
javac
編譯器編譯 Java 類,并使用 javah
工具生成 JNI 頭文件:javac MyClass.java
javah -jni MyClass
// myclass.cpp
#include <jni.h>
#include <iostream>
extern "C" JNIEXPORT jint JNICALL
Java_MyClass_add(JNIEnv *env, jclass cls, jint a, jint b) {
jclass staticClass = env->FindClass("MyClass");
jmethodID methodID = env->GetStaticMethodID(staticClass, "add", "(II)I");
jint result = env->CallStaticIntMethod(staticClass, methodID, a, b);
return result;
}
g++ -shared -fPIC -o libmyclass.so myclass.cpp -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
// MyClassWrapper.java
public class MyClassWrapper {
static {
System.loadLibrary("myclass");
}
public native int add(int a, int b);
public static void main(String[] args) {
MyClassWrapper wrapper = new MyClassWrapper();
int result = wrapper.add(3, 4);
System.out.println("3 + 4 = " + result);
}
}
javac MyClassWrapper.java
java MyClassWrapper
輸出結果應為:
3 + 4 = 7
這個示例展示了如何使用 C++ 調用 Java 的靜態方法。請注意,這里的示例僅用于演示目的,實際應用中可能需要處理更復雜的情況。