在一个单独的方法中初始化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
的新实例。但显然,作为参数传递的引用仍然指向