我正在将一个名为length的int变量传递给JNI,以修改其值。
但是我没有返回修改后的值。
我的JNI功能:
int change(int length){
length =6;
return something
}
当我在函数调用后使用长度值时,它具有默认值本身而不是修改后的值。
为什么我没有得到修改后的值?
答案 0 :(得分:2)
有两种方法:
1) 第一个是最简单的方法,只需返回长度即可:
int change(int length){
length = 6;
return length;
}
NB Java始终是pass-by-value!
2) 第二个比较棘手:
您必须创建一个方法才能 设置 和 获取 length
值。
类似这样的东西:
public class FooBar { //This is you class with the length var
private int _length;
public FooBar(){
_length = 0;
}
//Now we are going to create the SET and GET methods
public GetLength(){
return _length;
}
public SetLength(int length){
_length = length;
}
}
现在您的课程看起来与上面的课程相似,我们可以这样做:
int change(int length){
SetLength(length);
return something;
}
如果您是从另一个类调用的,则应记住首先创建该类的对象,如下例所示:>
FooBar foo1 = new FooBar();
//things and things here
int change(int length){
foo1.SetLength(length);
return something;
}
如您所见,lenght
变量现在为 private ,因此我们需要始终使用:
GetLength
以便检索其值。
SetLength
来设置新值。
Java中的每个类都应该像这样工作,这只是使用Java进行编程的良好习惯!