A Java reference type is treated as a class in C++. Classes and
interfaces are handled this way. A Java reference is translated to a
C++ pointer, so for instance a Java java.lang.String
becomes,
in C++, java::lang::String *
.
CNI provides a few built-in typedefs for the most common classes:
Java type | C++ typename | Description
|
java.lang.Object | jobject | Object type
|
java.lang.String | jstring | String type
|
java.lang.Class | jclass | Class type
|
Class
instance. These can be accessed in CNI via the static class$
field of a class. The class$
field is of type Class
(and not Class *
), so you will typically take the address of
it.
Here is how you can refer to the class of String
, which in
Java would be written String.class
:
using namespace java::lang; doSomething (&String::class$);