我用JNI 法由DLL返回一个jclass 值, JNIEXPORT jclass 实例化的问题.
JNIEXPORT jclass 实例化的问题.
我用JNI 法由DLL返回一个jclass 值,请问如何能把它实例化呢.
如
Class a = bb;
public class Dll {
public static native Class getClass(String prompt);
static {
System.loadLibrary("Dll");
}
public static void main(String[] args) {
Class aa = new aagetClass("String prompt"); //请问怎能把aa实例化执行 say()呢?
aa.say();
}
public class aa{
public String say()
{
System.out.println("is ok" );
return "2";}
}
------解决方案--------------------
zcDll是Dll new出来的?
------解决方案--------------------
Class aa = new aagetClass("String prompt"); //请问怎能把aa实例化执行 say()呢?
试试看
Object aa = dll.getClass("String prompt").newInstance()
Object aa = zcDll.getClass("String prompt").newInstance()
------解决方案--------------------
Object aa = Dll.getClass("String prompt").newInstance()
------解决方案--------------------给你个提示:
Java code
jobject JNICALL Java_jni_StuService_getStuList
(JNIEnv *env, jclass)
{
/**************创建ArrayList 对象 start*****************/
jclass class_ArrayList=env->FindClass("java/util/ArrayList");/* 获得Java类 */
jmethodID construct=env->GetMethodID( class_ArrayList, "","()V");/* 获得构造方法 */
jobject obj_List =env->NewObject( class_ArrayList, construct, "");/* 创建java对象 */
/**************创建ArrayList 对象 end *****************/
/* 获得List的add方法 */
jmethodID list_add=env->GetMethodID(class_ArrayList,"add","(Ljava/lang/Object;)Z");
int i=0;
while(i<3){
jobject student=constructStudent(env,i);
/* 调用List 的add方法 */
env->CallObjectMethod(obj_List,list_add,student);
++i;
}
return obj_List;
}