Использование JNI для создания, заполнения и возврата экземпляра класса Java

Я пытаюсь использовать функцию JNI для создания класса Java и установки некоторых свойств этого класса с помощью метода конструктора DeviceId.java. Я могу получить метод конструктора, используя GetMethodID, но как мне создать новый экземпляр Device.java, а затем установить свойства (setId и setCache). Цель состоит в том, чтобы вернуть полностью заполненный экземпляр объекта Device.java вызывающей стороне. Любые идеи?

Функция JNI:

 JNIEXPORT jobject JNICALL Java_com_test_getID(JNIEnv *env, jclass cls) 
    {
        jmethodID cnstrctr;
        jclass c = (*env)->FindClass(env, "com/test/DeviceId");
        if (c == 0) {
            printf("Find Class Failed.\n");
         }else{
            printf("Found class.\n");
         }

        cnstrctr = (*env)->GetMethodID(env, c, "<init>", "(Ljava/lang/String;[B)V");
        if (cnstrctr == 0) {
            printf("Find method Failed.\n");
        }else {
            printf("Found method.\n");
        }

        return (*env)->NewObject(env, c, cnstrctr);
    }

Класс Java:

package com.test;

public class DeviceId {
    private String id;
    private byte[] cache;

        public DeviceId(){}
    public DeviceId(String id, byte[] cache){
        this.id=id;
        this.cache=cache;
    }

    public byte[] getCache() {
        return cache;
    }

    public void setCache(byte[] cache) {
        this.cache = cache;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }   
}
11
задан c12 12 April 2012 в 19:56
поделиться