我有一段代码我必须知道内存是如何分配的
public class Demo {
public void checkNullReference(){
ConsumerName name = null;
addReference(name);
System.out.println(name.getConsumerName());
}
public void addReference(ConsumerName name){
name = new ConsumerName();
name.setConsumerName("KRISHNA");
}
public static void main(String []args){
Demo demo = new Demo();
demo.checkNullReference();
}
}
代码给出了空指针异常我已经给出了对象对方法的引用并且在那里我正在为其分配新对象并设置名称如果我重写该方法然后一切都按预期工作。
public void checkNullReference(){
ConsumerName name = new ConsumerName();
addReference(name);
System.out.println(name.getConsumerName());
}
最佳答案
您不能从被调用方法更改调用方法中的引用。因此,使用此代码:
public void checkNullReference(){
ConsumerName name = null;
addReference(name);
System.out.println(name.getConsumerName());
}
在调用 addReference(name)
之后,name
仍将是 null
,无论 addReference
做什么及其正式论证。
您可以重新设计 addReference
以返回 ConsumerName
的实例。当你在它的时候,你可以删除参数,因为它被忽略了。结果可能是:
public void checkNullReference(){
ConsumerName name = addReference();
System.out.println(name.getConsumerName());
}
public ConsumerName addReference(){
ConsumerName name = new ConsumerName();
name.setConsumerName("KRISHNA");
return name;
}
关于java - java中的空引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14017461/