java - java中的空引用

标签 java

我有一段代码我必须知道内存是如何分配的

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/

相关文章:

java - 将多个 pdf 合并为一个 pdf

java - 有没有办法让@Bean 创建的一些 bean 可区分?

java - 将 SQL 和绑定(bind)数据转换为直接 SQL

java - 如何使用 Scala 中的 Enum.valueOf?

java - 在 Android 中使用 "UNINSTALL_SHORTCUT"Intent

java - 为什么我的可运行接口(interface)循环我的队列继续这里

java - 计算对象图中多个数字的平均值

java - 如何修复intellij中的错误,该错误使我无法运行项目

java - java 中动态多选项 groupby 的复杂 hashmap 数据结构 - 改进在任意数据上运行 groupbys 的实现的想法

java - 暂时暂停方法直到下次调用