我对此代码有疑问:
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?
调用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)