即使在实例化之后,对象也是空的

Ram*_*son 0 java

我对此代码有疑问:

Object obj = null;
someMethod(obj);
System.out.println(obj.getId());
..
..
void someMethod(Object obj) {
    obj = new Object();
    obj.setId("Id1");
}
Run Code Online (Sandbox Code Playgroud)

上面的代码正在抛出NullPointerException.任何人都可以告诉我为什么即使在方法中实例化之后对象仍然为null?

Era*_*ran 8

调用someMethod(obj)不能改变obj变量的值(因为Java是按值语言传递),所以obj仍然null在调用之后,并System.out.println(obj.getId());抛出NullPointerException.

一种可行的替代方案:

Object obj = someMethod();
System.out.println(obj.getId());
..
..
Object someMethod() {
    obj = new Object();
    obj.setId("Id1");
    return obj;
}
Run Code Online (Sandbox Code Playgroud)