首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Java端访问数组

从Java端访问数组
EN

Stack Overflow用户
提问于 2013-07-25 14:48:20
回答 1查看 114关注 0票数 0

我在java类中有一个方法,该方法被调用来设置该类的字段。字段类型为"char []. As I try and access an element of thechar []‘my program将崩溃。

jni代码:

代码语言:javascript
复制
mid = env->GetMethodID(cls,"setData","([C)V");
env->CallVoidMethod(obj,mid,MyClass.Data)   //MyClass.Data: unsigned char Data [8];

java代码:

代码语言:javascript
复制
public void setData(char[] data2) {    //Data: char [] Data = new char [8];
    System.out.println("In Method");   //"In Method" is printed to console so
    //Data = data2.clone();              //i know im calling the method correctly
    for(int i = 0; i < 8; i++){
         Data[i] = data2[i];}
}

我使它发挥作用,但只有通过改变方法的签名才能做到:

代码语言:javascript
复制
//jni side
mid = env->GetMethodID(cls,"setData","(CCCCCCCC)V");
env->CallVoidMethod(obj,mid,MyClass.Data[0],MyClass.Data[1],MyClass.Data[2],MyClass.Data[3],MyClass.Data[4],
    MyClass.Data[5],MyClass.Data[6],MyClass.Data[7]);

//java side
public void setData(char c1,char c2,char c3,char c4,char c5,char c6,char c7,char c8) {
    Data[0] = c1;
    Data[1] = c2;
    Data[2] = c3;
    Data[3] = c4;
    Data[4] = c5;
    Data[5] = c6;
    Data[6] = c7;
    Data[7] = c8;
}

如何在数组中使用该方法?在以后的程序中,我有更大的数组作为字段,使用一个数组就不那么麻烦了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-25 14:56:37

java char数组与C char数组不是一回事:

  • Java中的char数组是除数据外还包含数组长度的对象。
  • Java中的字符是16位,通常是C中字符大小的两倍

jni具有创建Java数组和设置它们的元素( NewCharArray、GetCharArrayElements和ReleaseCharArrayElements )的功能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17861380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档