JNI方法笔记2 - C++中调用Java函数

JNI方法笔记2 - C++中调用Java函数

1.找到类

基于类名寻找类
env->FindClass("");

基于实例找到类
env->GetObjectClass(instance);

2.访问域

// 访问实例域
jfieldID instanceFieldId = env->GetFieldID(clazz, “instanceField”, “Ljava/lang/String;”)

// 访问静态域
jfieldID staticFieldId = env->GetStaticFieldID(clazz, “staticField”, “Ljava/lang/String;”);

3.获取方法

// 获取实例方法
jmethodID instanceMethodId = env->GetMethodID(clazz, “instanceMethod”, “()V”);

// 获取静态方法
jmethodID staticMethodId = env->GetStaticMethodID(clazz, “staticMethod”, “()V”);

4.调用方法

// 调用实例方法
env->CallMethod(instance, methodID, …params);

// 调用静态方法
env->CallStaticMethod(clazz, methodID, …params);

5.函数参数域的描述符

Void -> V
Boolean -> Z
Byte -> B
Char -> C
Short -> S
Int -> I
Long -> J
Float -> F
Double -> D
fully-qualified-class -> Lfully-qualified-class;
type[] -> [type
method type -> (arg-type)ret-type

发布了170 篇原创文章 · 获赞 69 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/qq951127336/article/details/89028216