java代码:public static int snd_Data(ArrayList data)
............
...........c++:mid = env->GetStaticMethodID( cls, "snd_Data", "(Ljava/util/ArrayList;)I");
if(mid !=0)
...............
..............已经找到这个函数,可是我该怎么调用呢? data参数该怎么传递?

解决方案 »

  1.   

    你看data的类型 是ArrayList的
    所以你在调用时 参数也应该是ArrayList类型或者是他的子类类型
      

  2.   

    ArrayList data = new ArrayList();
    data.add("你需要添加的数据");//add你需要添加的数据调用的话 因为你的snd_Date方法是static  所以直接用类名.方法名就能调用该方法。假如类名为A,那么就A.snd_Data(data)就好了。
      

  3.   

    我在用c++调用java的class文件,在c++中我只能用env->CallStaticIntMethod去调用这个函数,像这样:status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
    if (status != JNI_ERR)
    {
    cls = env->FindClass("cn/gov/cwl/dtclient/DTService");
    if (cls==0)
    {
    cout<<"c++: not found class!"<<endl;
    jvm->DestroyJavaVM();.............
    .............
    .............
    mid = env->GetStaticMethodID( cls, "GetData", "(Ljava/lang/String;)I");
    if(mid !=0)
    {
    cout<<"c++: static method GetData found."<<endl;
    square=-1;
    jstring str;
    str=(*env).NewStringUTF((const char*)snd);
    ret = env->CallStaticIntMethod( cls, mid,str);
    cout <<"c++: sendData return:"<< ret << std::endl;
    我不知道在C++中该怎么处理java的arraylist类型
      

  4.   

    创建这个方法所属的类后,实例化,然后可以直接调用的(因为static),比如:
    yourclass aclsss=new youclass();
    aclsss.snd_Data(ArrayList data) ;就算是调用了。
    data参数传递为题:int array[]={"name",age,"sex"};由对应的构造方法(构造器)传递。