聲明一個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!