我做了很多研究但发现java不能通过引用传递对象。但是,System.arraycopy()
如何更改所提供数组的值。
答案 0 :(得分:0)
System.arraycopy()
更改数组的内容,而不是对象/引用本身。包含为输入参数的数组必须在方法外声明。
答案 1 :(得分:0)
我不确切知道你的“传递对象”是什么意思。 如果表示调用函数并将对象作为参数传递。然后在Java中,任何Object都在引用中传递。这意味着如果在被调用的函数中修改该对象,则修改将在函数返回时生效。
答案 2 :(得分:0)
System.arraycopy()
更改数组的内容,而不是确切的数组。但是,可以编写Pointer
类。
public class Pointer<T>{
private T value;
public Pointer(T value){
this.value = value;
}
public T get(){
return value;
}
public void set(T value){
this.value = value;
}
}
Pointer<SomeClass> pointer = new Pointer<>(theObject);
pointer.set(otherObject);
theObject = pointer.get();
或者使用&#34; System.arraycopy()
技巧&#34;:
SomeClass[] pointer = new SomeClass[]{ theObject };
pointer[0] = otherObject;
theObject = pointer[0];