我试图让C#在我的java程序中实现一个类。我有一些更简单的例子,但是我遇到了我的java类将字符串数组作为构造函数的问题。
我的问题是如何在.c文件中创建一个字符串数组,然后可以将其传递给java类?
当我设法传递一个jString对象时。
继承我的.c文件中的方法。
jobject newClassInstance()
{
jmethodID MID_init;
jobject obj;
jstring name;
jobjectArray ret;
MID_init = (*env)->GetMethodID (env, jClass, "<init>", "([Ljava/lang/String;)V");
if (!MID_init) {
printf("Error: dllClass.<init>() not found\n");
return NULL;
}
name = (*env)->NewStringUTF(env,"Moo");
obj = (*env)->NewObject(env, jClass, MID_init, name);
if (!obj) {
printf("Error: failed to allocate an object\n");
return NULL;
}
return obj;
}
如果您需要更多信息,请与我们联系。
亲切的问候
灰
答案 0 :(得分:5)
示例代码:
jobjectArray stringArray;
jString tmp;
char *stringA = "Test1";
char *stringB = "Test2";
jclass clsString;
jint size = 2;
clsString = (*env)->FindClass(env, "java/lang/String");
stringArray = (*env)->NewObjectArray(env, size, clsString, 0);
tmp = (*env)->NewStringUTF(env, stringB);
(*env)->SetObjectArrayElement(env, stringArray, 0, tmp);
tmp = (*env)->NewStringUTF(env, stringA);
(*env)->SetObjectArrayElement(env, stringArray, 1, tmp);
obj = (*env)->NewObject(env, jClass, MID_init, stringArray);