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