While in many ways Java is similar to C and C++, it is quite different
in its treatment of arrays.  C arrays are based on the idea of pointer
arithmetic, which would be incompatible with Java's security
requirements.  Java arrays are true objects (array types inherit from
java.lang.Object).  An array-valued variable is one that
contains a reference (pointer) to an array object.
   
Referencing a Java array in C++ code is done using the
JArray template, which as defined as follows:
     class __JArray : public java::lang::Object
     {
     public:
       int length;
     };
     
     template<class T>
     class JArray : public __JArray
     {
       T data[0];
     public:
       T& operator[](jint i) { return data[i]; }
     };
   There are a number of typedefs which correspond to typedefs
from the JNI.  Each is the type of an array holding objects
of the relevant type:
     typedef __JArray *jarray;
     typedef JArray<jobject> *jobjectArray;
     typedef JArray<jboolean> *jbooleanArray;
     typedef JArray<jbyte> *jbyteArray;
     typedef JArray<jchar> *jcharArray;
     typedef JArray<jshort> *jshortArray;
     typedef JArray<jint> *jintArray;
     typedef JArray<jlong> *jlongArray;
     typedef JArray<jfloat> *jfloatArray;
     typedef JArray<jdouble> *jdoubleArray;
   This template function can be used to get a pointer to the elements of the
array. For instance, you can fetch a pointer to the integers that make up anint[]like so:extern jintArray foo; jint *intp = elements (foo);The name of this function may change in the future.
This creates a new array whose elements have reference type.
klassis the type of elements of the array andinitis the initial value put into every slot in the array.
     using namespace java::lang;
     JArray<String *> *array
       = (JArray<String *> *) JvNewObjectArray(length, &String::class$, NULL);
   For each primitive type there is a function which can be used to create a new array of that type. The name of the function is of the form:
JvNewTypeArray
For example:
JvNewBooleanArray
can be used to create an array of Java primitive boolean types.
The following function definition is the template for all such functions: