JNI Types

More info, plz take the reference from jni.h in SUN java / android NDK.

 

Primitive Types:

Java Language Type
Native Type
Description
boolean
jboolean
unsigned 8 bits
byte
jbyte
signed 8 bits
char
jchar
unsigned 16 bits
short
jshort
signed 16 bits
int
jint
signed 32 bits
long
jlong
signed 64 bits
float
jfloat
32 bits
double
jdouble
64 bits

 

Jni.h code snippet:

#ifdef HAVE_INTTYPES_H
# include <inttypes.h>      /* C99 */
typedef uint8_t         jboolean;       /* unsigned 8 bits */
typedef int8_t          jbyte;          /* signed 8 bits */
typedef uint16_t        jchar;          /* unsigned 16 bits */
typedef int16_t         jshort;         /* signed 16 bits */
typedef int32_t         jint;           /* signed 32 bits */
typedef int64_t         jlong;          /* signed 64 bits */
typedef float           jfloat;         /* 32-bit IEEE 754 */
typedef double          jdouble;        /* 64-bit IEEE 754 */
#else
typedef unsigned char   jboolean;       /* unsigned 8 bits */
typedef signed char     jbyte;          /* signed 8 bits */
typedef unsigned short  jchar;          /* unsigned 16 bits */
typedef short           jshort;         /* signed 16 bits */
typedef int             jint;           /* signed 32 bits */
typedef long long       jlong;          /* signed 64 bits */
typedef float           jfloat;         /* 32-bit IEEE 754 */
typedef double          jdouble;        /* 64-bit IEEE 754 */
#endif

 

Class Descriptors:

"int[]"   ->   "[I"

"double[][][]"   ->   "[[[D"

 

Field Descriptors:

The field descriptors for eight primitive types are as follows:

 

Field Descriptor
Java Language Type
Z
boolean
B
byte
C
char
S
short
I
int
J
long
F
float
D
double

 

Field descriptors of reference types begin with the "L " character, followed by the class descriptor, and terminated by the "; " character. Field descriptors of array types are formed following the same rule as class descriptors of array classes. The following are some examples of field descriptors for reference types and their Java programming language counterparts.

Field Descriptor
Java Language Type
"Ljava/lang/String;"
String
"[I"
int[]
"[Ljava/lang/Object;"
Object[]

 

Method Descriptors:

Method descriptors are formed by placing the field descriptors of all argument types in a pair of parentheses, and following that by the field descriptor of the return type. There are no spaces or other separator characters between the argument types. "V " is used to denote the void method return type. Constructors use "V " as their return type, and use "<init> " as their name.

Here are some examples of JNI method descriptors and their corresponding method and constructor types.

Method Descriptor
Java Language Type
"()Ljava/lang/String;"
String f();
"(ILjava/lang/Class;)J"
long f(int i, Class c);
"([B)V"
String(byte[] bytes);

 

 

你可能感兴趣的:(type)