声明一个Java native方法
/**
* @param param 待转置的字符串。
* @return 转置后的字符串。
*/
public static native String reverseStr(String param);
生成一个native C方法声明
JNIEXPORT jstring JNICALL Java_____reverseStr(JNIEnv *, jclass, jstring);
实现native C方法
JNIEXPORT jstring JNICALL Java_____reverseStr(JNIEnv *env, jclass jc, jstring p) {
jsize js = (*env)->GetStringLength(env, p);
const jchar *jch = (*env)->GetStringChars(env, p, NULL);
jsize j = 0, i = js - 1;
jchar jch_tmp_1[js];
for (; j < js; ++j, --i) {
jch_tmp_1[j] = jch[i];
}
(*env)->ReleaseStringChars(env, p, jch);
return (*env)->NewString(env, jch_tmp_1, js);
}
此处重点放在本地方法的实现中。
测试
System.out.println(reverseStr("!anihC uoy evol I!国中你爱我"));
2020-04-14 22:42:55.257 1106-1106/I/System.out: 我爱你中国!I love you China!