1. 程式人生 > >Ndk學習之JNI建構函式(java-->C-->Java)

Ndk學習之JNI建構函式(java-->C-->Java)

1.在Java中定義建構函式(無參的不寫沒事,不被覆蓋就行)並獲取

public native Object accessConstaructor();

2.javah生成標頭檔案

JNIEXPORT jobject JNICALL Java_com_boom_JNITest_accessConstaructor
(JNIEnv * env, jobject jobj)

3.原始碼中進行具體實現

//訪問構造方法
//使用java.util.Date產生一個當前的時間戳
JNIEXPORT jobject JNICALL Java_com_boom_JNITest_accessConstaructor
(JNIEnv * env, jobject jobj){
	//jclass
	jclass cls = (*env)->FindClass(env,"java/util/Date");
	//jmethodID
	jmethodID constaructor_mid = (*env)->GetMethodID(env,cls,"<init>","()V");
	//例項一個Date物件
	jobject date_obj = (*env)->NewObject(env,cls,constaructor_mid);
	//呼叫getTime方法
	jmethodID mid = (*env)->GetObjectClass(env,date_obj);
	jlong time = (*env)->CallLongMethod(env,date_obj,mid);
	
	printf("\ntime:%lld\n",time);
	return date_obj;
}


3.原始碼中進行具體實現