首页 > 解决方案 > 如何让jstring脱离jobject?C++

问题描述

我正在尝试从我的作业中获取字符串属性。我找不到任何解决我的问题的方法,谷歌也没有帮助

这是我的Java类:

public class HumanBean {

    String name;
    int alter;
    int gehalt;
    double gehaltDouble;

    ....getter and setter...
}

CPP-File - 注释代码是我试图从 jobject 中获取名称字符串的地方

Human createHuman(JNIEnv *env, jclass cls, jobject javaObject) {
    jclass cls = (*env).GetObjectClass(javaObject);

    //jfieldID fidInt = (*env).GetFieldID(cls, "name", "Ljava/lang/String;");
    //jstring name = ??????????????????????

    jfieldID fidInt = (*env).GetFieldID(cls, "alter", "I");
    jint alter = (*env).GetIntField(objarg, fidInt);

    jfieldID fidInt = (*env).GetFieldID(cls, "gehalt", "I");
    jint gehaltInt = (*env).GetIntField(objarg, fidInt);

    jfieldID fidInt = (*env).GetFieldID(cls, "gehaltDouble", "D");
    jdouble gehaltDouble = (*env).GetDoubleField(objarg, fidInt);

    Human newHuman = Human(alter, name, gehaltDouble, gehaltInt);

    return newHuman;
}

标签: javac++dlljava-native-interface

解决方案


我认为这会起作用:

jfieldID fidName = (*env).GetFieldID(cls, "name", "Ljava/lang/String;");
jstring nameString = (jstring)(*env).GetObjectField(cls, fidName);

推荐阅读