如何在java中通过引用传递对象?

时间:2015-02-25 09:21:46

标签: java

我做了很多研究但发现java不能通过引用传递对象。但是,System.arraycopy()如何更改所提供数组的值。

3 个答案:

答案 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];