Evr*_*urk 2 java android pass-by-reference
我正在尝试为Android GSM构建一个litle gam.我有很多单位,所有单位都有目的地.为了计算目的地我正在使用一个名为CalDes的函数.此功能CalDes正在计算我单位的速度.所以我发送了一些我必须编辑的变量并再次使用它们.为此,我必须参考这些变量.这是一个简单的C++如何在java中做到这一点?
void swap(SomeType& arg1, Sometype& arg2) {
SomeType temp = arg1;
arg1 = arg2;
arg2 = temp;
}
...
SomeType var1 = ...; // value "A"
SomeType var2 = ...; // value "B"
swap(var1, var2); // swaps their values!
Run Code Online (Sandbox Code Playgroud)
T.J*_*der 13
Java根本没有pass-by-reference.你有几个选择:
传递数组中的数据:
void swap(SomeType[] args) {
SomeType temp = args[0];
args[0] = args[1];
args[1] = temp;
}
Run Code Online (Sandbox Code Playgroud)
...但是使用它是调用代码的一个难点:
SomeType a = ...;
SomeType b = ...;
SomeType[] args = new SomeType[] { a, b };
swap(args);
a = args[0];
b = args[1];
Run Code Online (Sandbox Code Playgroud)创建一个具有公共SomeType成员的对象,并传入对象引用.
void swap(SomeTypeContainer c) {
SomeType temp = c.a;
c.a = c.b;
c.b = temp;
}
Run Code Online (Sandbox Code Playgroud)
这与#1非常相似,但通过调用代码可能更方便.
SomeTypeContainer c = new SomeTypeContainer(/* ... something that creates a and b ... */);
// Use c.a and c.b directly
swap(c);
// Use c.a and c.b directly, they're now swapped
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
17128 次 |
| 最近记录: |