[英]How to pass multiple arguments to CallObjectMethod from C++ using JNI
[英]Pass DateTime arguments with JNI c++
我正在使用JNI,我需要將DateTime作為參數傳遞給方法。 我應該使用什么格式?
這是我的代碼示例:
int number = 10;
initial = env->GetMethodID(Simulator,"initialize", "(Ljava/util/Date;Ljava/util/Date;I)V");
if (env->ExceptionCheck()){
cout << "Fail:";
}
env->CallVoidMethod(Simulation,initial,"2014/05/21T00:00:00","2014/05/21T23:59:59",number);
我需要將這些日期作為Ljava / util / Date參數而不是字符串傳遞,因為我無法更改JNI調用的Java代碼。
您只需要首先創建兩個java.util.Date
對象。 像這樣:
int number = 10;
jmethodID initial = env->GetMethodID(Simulator,"initialize", "(Ljava/util/Date;Ljava/util/Date;I)V");
if (env->ExceptionCheck()){
cout << "Fail:";
}
jclass dateType = env->FindClass("Ljava/util/Date;");
if(dateType == nullptr){
cout << "Fail:";
}
jmethodID dateTypeConstructor= env->GetMethodID(dateType, "<init>", "(Ljava/lang/String;)V");
if(constructor == nullptr){
cout << "Fail:";
}
jstring constructorString1 = env->NewStringUTF("2014/05/21T00:00:00");
jobject dateObject1 = env->NewObject(dateType , dateTypeConstructor, constructorString1);
if(dateObject1 == nullptr)
cout << "Fail:";
}
jstring constructorString2 = env->NewStringUTF("2014/05/21T23:59:59");
jobject dateObject2 = env->NewObject(dateType , dateTypeConstructor, constructorString2);
if(dateObject2 == nullptr)
cout << "Fail:";
}
env->CallVoidMethod(Simulation, initial, dateObject1, dateObject2, number);
從JDK 1.1開始不推薦使用構造方法Date(String s)
,但是如果必須使用SimpleDateFormat或僅可以用Java編寫靜態方法來為String返回一個java.util.Date
對象,則原理是相同的。你傳遞給它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.