在一个单独的方法中初始化Java对象:为什么它赢了';行不通

在一个单独的方法中初始化Java对象:为什么它赢了';行不通,java,methods,constructor,initialization,Java,Methods,Constructor,Initialization,有一件事我说不出来,我很惊讶它不起作用,但无论如何,找到这个案例的解释对我来说很有趣。 假设我们有一个对象: SomeClass someClass = null; 以及将此对象作为参数进行初始化的方法: public void initialize(SomeClass someClass) { someClass = new SomeClass(); } 然后当我们打电话时: initialize(someClass); System.out.println("" + someClas

有一件事我说不出来,我很惊讶它不起作用,但无论如何,找到这个案例的解释对我来说很有趣。 假设我们有一个对象:

SomeClass someClass = null;
以及将此对象作为参数进行初始化的方法:

public void initialize(SomeClass someClass) {
  someClass = new SomeClass();
}
然后当我们打电话时:

initialize(someClass);
System.out.println("" + someClass);
它将打印:

null

谢谢你的回答

这在java中是不可能做到的。在C#中,使用
ref
out
关键字传递参数。java中没有这样的关键字。有关详细信息,请参见此问题:


顺便说一句,出于同样的原因,您不能用java编写交换两个整数的交换函数。

正如Armen提到的,这样做是不可能的。为什么不使用

以及将此对象作为参数进行初始化的方法:

public void initialize(SomeClass someClass) {
  someClass = new SomeClass();
}
在您的案例中,该方法不将对象作为参数。它接受一个指向null的引用。然后它复制此引用并将其指向
SomeClass
的新实例。但显然,作为参数传递的引用仍然指向