Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>There's way to read a java object fields:</p> <pre><code>jint _JMETHODNAME(MyClass,myMethod) (JNIEnv *env, jclass jcMyClass, jobject joMyObject) { //Get the class jcMyObjectClass = env-&gt;FindClass("test/native/MyObject"); if (jtException = env-&gt;ExceptionOccurred()) { //Error management } if (jcMyObjectClass == NULL) { //Error management } //Check if the class matchs the object jboolean jbFlag = env-&gt;IsInstanceOf(joMyObject,jcMyObjectClass); if (jtException = env-&gt;ExceptionOccurred()) { //Error management } if (jbFlag == JNI_FALSE) { //Error management } //Get a field jfieldID jfIdentField = env-&gt;GetFieldID(jcMyObjectClass,"fieldName","Ljava/lang/String;"); if (jtException = env-&gt;ExceptionOccurred()) { //Error management } if (jfIdentField == NULL) { //Error management } //Read a field jstring jsMyString = (jstring)env-&gt;GetObjectField(joMyObject,jfIdentField); if (jtException = env-&gt;ExceptionOccurred()) { //Error management } if (jsMyString == NULL) { //Error management } //Convert to C++ format LPCTSTR strMyString = (LPTSTR)env-&gt;_tGetString(jsMyString, NULL); jsize myStringLen = env-&gt;_tGetStringLength(jsMyString); if (strMyString == NULL) { //Error management } } </code></pre> <p>So you can use a Java Object as parameter and convert it to a C structure if you want.</p> <p>Maybe this helps you.</p> <p>For a selfreferenced object you can go through all of them like this:</p> <pre><code>//Get a field jfieldID jfIdentField = env-&gt;GetFieldID(jcMyObjectClass,"selfReference","test/native/MyObject"); if (jtException = env-&gt;ExceptionOccurred()) { //Error management } if (jfIdentField == NULL) { //Error management } //Read a field jobject joNextMyObject = (jstring)env-&gt;GetObjectField(joMyObject,jfIdentField); if (jtException = env-&gt;ExceptionOccurred()) { //Error management } while (joNextMyObject != NULL) { //Process object //Read a field joNextMyObject = (jstring)env-&gt;GetObjectField(joNextMyObject,jfIdentField); if (jtException = env-&gt;ExceptionOccurred()) { //Error management } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload