Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中通过引用传递对象?_Java - Fatal编程技术网

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

如何在java中通过引用传递对象?,java,Java,我做了很多研究,但只发现java不能通过引用传递对象。但是,System.arraycopy如何更改所提供数组的值。System.arraycopy更改数组的内容,而不是对象/引用本身。作为输入参数包含的数组必须在方法外部声明。我不知道pass对象的确切含义。 如果您的意思是调用函数并将对象作为参数传递。然后在Java中,任何对象都以引用的形式传递。这意味着,如果在调用的函数中修改该对象,即使函数返回,修改也会生效。System.arraycopy更改数组的内容,而不是确切的数组。但是,可以编写

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

System.arraycopy更改数组的内容,而不是对象/引用本身。作为输入参数包含的数组必须在方法外部声明。

我不知道pass对象的确切含义。 如果您的意思是调用函数并将对象作为参数传递。然后在Java中,任何对象都以引用的形式传递。这意味着,如果在调用的函数中修改该对象,即使函数返回,修改也会生效。

System.arraycopy更改数组的内容,而不是确切的数组。但是,可以编写指针类


实际上,您根本无法传递对象。请看一看。当您读取数组的所有数据并将其放入新创建的数组中时,您认为会发生什么?Java只允许作为引用传递对象。混淆点在于引用是按值传递的。实际上,在Java中,所有内容都是按值传递的。。即使引用也是按值传递的。。
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();
SomeClass[] pointer = new SomeClass[]{ theObject };

pointer[0] = otherObject;
theObject = pointer[0];