JNI提供了函数NewObject在本地代码中创建Java对象。函数声明如下:
jobject NewObject(jclass clazz, jmethodID methodID, ...);
其中,clazz代表对象所属的类,methodID代表了要使用的构造函数,所以使用NewObject创建对象之前先要调用函数GetMethodID取得构造方法的ID。
例子(C++端):
//在本地代码中创建一个Date类的对象now
jcalss clazz_date = env->FindClass( " java/util/Date" );
jmethodID mid_date = env->GetMethodID( clazz_date , "<init>" , "( )V" );
jobject now = env->NewObject( clazz_date , mid_date );
//本地调用now对象的getTime()方法
jmethodID mid_date_getTime = env->GetMethodID( clazz_date , "getTime" , "( )J");
jlong time = env->CallLongMethod( now , mid_date_getTime);
cout<<time<<endl;