android jni-新对象函数不';不调用构造函数?

android jni-新对象函数不';不调用构造函数?,android,java-native-interface,jnienv,Android,Java Native Interface,Jnienv,我构建了一个简单的示例,从本机代码调用java方法, 我正在调用某个对象的java方法,但构造函数从未调用 我的java类: public class MyJavaNumber { private int num; public MyJavaNumber() { num = 7; Log.d("MyJavaNumber" , "con"); } public int getNum() { Log.d("g

我构建了一个简单的示例,从本机代码调用java方法, 我正在调用某个对象的java方法,但构造函数从未调用

我的java类:

public class MyJavaNumber
{
    private int num;

    public MyJavaNumber()
    {
        num = 7;
        Log.d("MyJavaNumber" , "con");
    }

    public int getNum() {
        Log.d("getNum" , "num = " + num);
        return num;
    }
}
cpp代码:

extern "C"
{
JNIEXPORT jint JNICALL
        Java_nativeex_com_example_nativeex_MainActivity_getIntA(JNIEnv *env, jobject obj);
};

JNIEXPORT jint JNICALL
        Java_nativeex_com_example_nativeex_MainActivity_getIntA(JNIEnv *env, jobject obj)
{
    jclass localClass = env->FindClass("nativeex/com/example/nativeex/MyJavaNumber");
    javaClassRef = (jclass) env->NewGlobalRef(localClass);
    javaMethodRef = env->GetMethodID(javaClassRef, "getNum", "()I");
    jobject javaObjectRef = env->NewObject(javaClassRef, javaMethodRef);
    return env->CallIntMethod(javaObjectRef, javaMethodRef);
}
主要活动:

public class MainActivity extends AppCompatActivity {

public native int getIntA();


static
{
    System.loadLibrary("ndktest");
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Log.d("onCreate", "" + getIntA());


}
}

日志输出为:

07-13 14:00:01.049 6797-6797/nativeex.com.example.nativeex D/getNum: num = 0
07-13 14:00:01.049 6797-6797/nativeex.com.example.nativeex D/getNum: num = 0
07-13 14:00:01.049 6797-6797/nativeex.com.example.nativeex D/onCreate: 0
我调用对象上的methodos,但构造函数却从不调用,这怎么可能呢

javaMethodRef = env->GetMethodID(javaClassRef, "getNum", "()I");
jobject javaObjectRef = env->NewObject(javaClassRef, javaMethodRef);
javaMethodRef
不可接受,关于
NewObject

构造一个新的Java对象。方法ID指示 要调用的构造函数方法。必须通过调用 GetMethodID(),方法名为
,方法名为
void
V
) 返回类型

javaMethodRef
不可接受,关于
NewObject

构造一个新的Java对象。方法ID指示 要调用的构造函数方法。必须通过调用 GetMethodID(),方法名为
,方法名为
void
V
) 返回类型

尝试在方法Java_nativeex_com_example_nativeex_main activity_getIntA(JNIEnv*env,jobject obj)中使用参数“obj” 此参数是MyJavaNumber的一个对象。当调用构造函数时,我也感到困惑。

尝试在方法Java\u nativeex\u com\u example\u nativeex\u main activity\u getIntA(JNIEnv*env,jobject obj)中使用参数“obj” 此参数是MyJavaNumber的一个对象。当构造函数被调用时,我也感到困惑