Android JNI Primeros pasos se implementa en objeto C ++ Estudiante en el funcionamiento de Java, y luego mirar un ejemplo de objetos.
El código anterior, no tenemos ninguna persona entrante y objeto Student, pero conseguir los dos objetos por la reflexión del camino.
de registro de salida de la siguiente manera:
código completo testObject sigue:
extern "C"
JNIEXPORT void JNICALL
Java_com_hongx_jni_MainActivity_testObject(JNIEnv *env, jobject thiz) {
const char *person_class_str = "com/hongx/jni/Person";
jclass person_class = env->FindClass(person_class_str);
jobject person = env->AllocObject(person_class);
// 初始化方法
const char *sig = "(Lcom/hongx/jni/Student;)V";
jmethodID setStudent = env->GetMethodID(person_class, "setStudent", sig);
// 直接创建 Student 对象
const char *student_class_str = "com/hongx/jni/Student";
jclass student_class = env->FindClass(student_class_str);
jobject student = env->AllocObject(student_class);
// 给我们创建出来的Student对象赋值
sig = "(Ljava/lang/String;)V";
jmethodID setName = env->GetMethodID(student_class, "setName", sig);
jstring value = env->NewStringUTF("刘德华");
env->CallVoidMethod(student, setName, value);
sig = "(I)V";
jmethodID setAge = env->GetMethodID(student_class, "setAge", sig);
env->CallVoidMethod(student, setAge, 89);
// 调用Person里面的方法
env->CallVoidMethod(person, setStudent, student);
// 回收方式
/*env->DeleteLocalRef(student_class); // jclass jobject
env->DeleteLocalRef(student);*/
}