Mapping Native Types to JNIWrapper Classes
Please find below the mappings table for most commonly used data types along with some comments.
|
|
JNIWrapper Type
|
Comments
|
|
Boolean Types
|
|
bool
|
|
|
|
Character Types
|
|
char
|
|
|
|
wchar_t
|
|
|
|
uchar *
|
|
|
|
Integer Types
|
|
short
|
|
The unsigned types are represented by prepending U to the type name, e.g. unsigned
int (or unsigned) type is UInt.
There are also types for predefined-width integers: Int8, Int16, Int32 and Int64, they also have the
unsigned variants.
|
|
int
|
|
|
long
|
|
|
Floating-point Types
|
|
float
|
|
|
|
double
|
|
|
|
long double
|
|
Long double is the same as double (8-byte floating-point value) on win32 platform.
|
|
Pointer Types (not arrays)
|
|
void *
|
|
|
|
const
|
|
Use Pointer.Const if the referenced object is not to be modified by the calling function.
|
|
type *
|
|
To create a pointer to the value (variable) of a known type, use the Pointer class. For
example: int *i; is Pointer i = new Pointer(new Int());
|
|
type *
|
|
Use Pointer.OutOnly if the referenced value is not read by the calling function.
|
|
char *
|
|
|
|
wchar_t *
|
|
|
|
Arrays
|
|
<c primitive type>[n]
|
|
For example: int i[10];
is
PrimitiveArray i = new PrimitiveArray(Int.class, 10);
|
|
Structures and Unions
|
|
struct
|
|
|
|
union
|
|
|
|
Function Pointers
|
To create an object callable from the native code use the
Callback class.
To call a function returned from the native code use the method
asFunction
of the Pointer.Void class.
|
Windows
API includes many data types that are not listed here (for example, DWORD,
HANDLE). If you need to use one of such types, read Windows-specific
documentation such as MSDN to find out the actual C type that
corresponds to it (for example, LPSTR corresponds to char*) and use the
relevant JNIWrapper type for the argument. You can also check the
Windows Data Types table that we have created for your
reference.