【问题标题】:Java access variables in arguments [duplicate]参数中的Java访问变量[重复]
【发布时间】:2013-02-18 16:24:10
【问题描述】:
我希望能够访问传递给我的方法的变量。我知道 C 可能有某种方法可以将某物的地址作为参数传递,然后将其称为指针并能够使用该变量。无论如何,这是一个例子。
void myFunction(address to variable) {
*variable = "example";
}
然后称它为:
myFunction(&somevariable);
【问题讨论】:
标签:
java
variables
pointers
arguments
【解决方案1】:
在 Java 中无法通过引用或指针传递参数,因此实现您想要的效果的唯一方法是传递一个 mutable 对象,并在方法内更改其值你打电话:
public class ChangeableInt {
private int number;
public ChangeableInt(int value) {number = value;}
public int get() {return number;}
public void set(int value) {number = value;}
}
有了这个类,你可以这样做:
void myFunction(ChangeableInt arg) {
arg.set(42);
}
...
ChangeableInt val = new ChangeableInt(123);
myFunction(val);
System.out.println(val.get()); // prints 42
【解决方案2】:
你需要的是一个简单的包装模板类...
class ObjWrapper<T> {
T value;
void setValue(T val) {
value=val;
}
T getValue() {
return value;
}
}
【解决方案3】:
类似
class Myclass{
int x=15;
System.out.println(x) //15
public static void main(String... ){
Myclass obj = new Myclass()
Myclass newRef = method(obj)
System.out.println(newRef.x) //20
}
static Myclass method(Myclass ref){
ref.x=20
return ref
}
}//class
请注意,'obj' 是对驻留在堆中某处的对象的引用。