class Sorry {
static {
System.loadLibrary("sorry");
}
public native String sorry(String name);
public static void main(String[] args) {
Sorry s = new Sorry();
if (args.length > 0) {
String answer = s.sorry(args[0]);
System.out.println("Answer is "+answer);
}
}
}
|
Native Mathod である sorry() は java.lang.String を引数にもらい、同じく java.lang.String を返す。この sorry() の実装は、次のようになる。
#include <jni.h>
#include "Sorry.h"
#include <stdio.h>
JNIEXPORT jstring JNICALL
Java_Sorry_sorry(JNIEnv *env, jobject obj, jstring name) {
char answer[128];
const char *str = (*env)->GetStringUTFChars(env, name, 0);
printf("Sorry, %s.\n", str);
(*env)->ReleaseStringUTFChars(env, name, str);
scanf("%s", answer);
return (*env)->NewStringUTF(env, answer);
}
|
% java Sorry YOSHIDA Sorry, YOSHIDA. Welcome Answer is Welcome