Java JNI“;“新对象”;当使用NULL值初始化它时,是否不返回NULL?

Java JNI“;“新对象”;当使用NULL值初始化它时,是否不返回NULL?,java,android,c++,java-native-interface,Java,Android,C++,Java Native Interface,当我做了一些,我得到了一些有效的答案,但我发现了一些其他的问题(或者我认为是) 代码如下: JNIEXPORT jint JNICALL test_jni_Native_testSet(JNIEnv *env, jclass type, jobject tdobj) { //Create Integer class, get constructor and create Integer object jclass intClass = env->FindClass(env,

当我做了一些,我得到了一些有效的答案,但我发现了一些其他的问题(或者我认为是)

代码如下:

JNIEXPORT jint JNICALL test_jni_Native_testSet(JNIEnv *env, jclass type, jobject tdobj)
{
    //Create Integer class, get constructor and create Integer object
    jclass intClass = env->FindClass(env, "java/lang/Integer");
    jmethodID initInt = env->GetMethodID(env, intClass, "<init>", "(I)V");
    if (NULL == initInt) return -1;
    jobject newIntObj = env->NewObject(env, intClass, initInt, 123);

    //Now set your integer into value atttribute. For this, I would
    //recommend you to have a java setter and call it in the same way 
    //as shown above

    //clean reference
    env->DeleteLocalRef(env, newIntObj); 
    return 0;
}
在java代码中,我通过这个本机函数设置了一个整数参数。 如果成功调用构造函数,env->NewObject似乎不会返回NULL。 这意味着我只能将一个jobject赋值为NULL,而不能调用NewObject函数并初始化它

我认为这不是一个好手艺

如前所述:

所以,我的问题是:


当我们用NULL值初始化对象时,为什么不返回NULL?

函数
NewObject
使用非类型安全的变量参数列表。如果将NULL传递给构造函数,它将被解释为整数值0。因此,它将成功构造一个初始化为0的整数对象。

首先感谢。我想读JNI的源代码,你知道我在哪里可以得到它吗?“我想读JNI的源代码”例如:啊哈~~我知道了~~谢谢~
jobject newIntObj = env->NewObject(env, intClass, initInt, 123);
env->NewObject(...)
RETURNS:

Returns a Java object, or NULL if the object cannot be constructed.