是的,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 的静态方法。请注意,这里的示例仅用于演示目的,实际应用中可能需要处理更复杂的情况。