|
|
Java Native Interface Programming |
In this section, you will learn how to reference Java types in your native method. This is useful when you want to access the arguments passed in from Java, create new Java objects, and return results to the caller.Java Primitive Types
Your native method can directly access Java primitive types such as booleans, integers, floats, and so on, that are passed from Java programs. For example, the Java type boolean maps to the native type
jboolean(represented as unsigned 8 bits), while the Java type float maps to the native typejfloat(represented by 32 bits). The following table describes the mapping of Java primitive types to native types.Java Primitive Types and Native Equivalents
Java Type Native Type Size in bits boolean jboolean 8, unsigned byte jbyte 8 char jchar 16, unsigned short jshort 16 int jint 32 long jlong 64 float jfloat 32 double jdouble 64 void void n/a Java Object Types
Java objects are passed by reference. All references to Java objects have type
jobject. For convenience and to reduce the chance of programming errors, we introduce a set of types that are conceptually all "subtypes" ofjobject:
jobjectrepresents all Java objects.
jclassrepresents Java class objects (java.lang.Class).jstringrepresents Java strings (java.lang.String).jarrayrepresents Java arrays.
jobjectArrayrepresents arrays of objects.jbooleanArrayrepresents boolean arrays.jbyteArrayrepresents byte arrays.jcharArrayrepresents char arrays.jshortArrayrepresents short arrays.jintArrayrepresents int arrays.jlongArrayrepresents long arrays.jfloatArrayrepresents float arrays.jdoubleArrayrepresents double arrays.jthrowablerepresents Java exceptions (java.lang.Throwable).In our
Prompt.javaexample, the native methodgetLine:takes a Java string as an argument and returns a Java string. Its corresponding native implementation has type:private native String getLine(String prompt);As mentioned above,JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *, jobject, jstring);jstringcorresponds to Java typeString. The second argument, which is the reference to the object itself, has typejobject.
|
|
Java Native Interface Programming |