我正在使用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代码。
答案 0 :(得分:0)
您必须先创建两个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);
构造函数Date(String s)
是deprecated since JDK 1.1,但如果必须使用SimpleDateFormat,原则是相同的,或者你可以在Java中编写一个静态方法,它将返回{{} 1}}传递给它的String的对象。