You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何在Cd类通过带参方法初始化Publisher类成员?

解决Java NullPointerException异常问题

问题根源

  • 空指针触发原因:Cd类中仅声明了Publisher publisher成员变量,但未创建实例对象(未执行new Publisher()),直接调用publisher.setName()和publisher.setPhoneNumber()时,publisher为null,导致空指针异常。
  • 额外问题:Publisher类仅定义了私有成员变量,但未提供对外的setter方法,即便实例化了publisher,也无法设置其name和phoneNumber属性。

修复代码

修复后的Publisher类(添加setter方法)

public class Publisher {
    private String name;
    private String phoneNumber;

    // 为私有成员添加setter方法
    public void setName(String name) {
        this.name = name;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

修复后的Cd类(实例化publisher对象)

有两种常见修复方式:

方式1:在setPublisher方法内实例化
public class Cd {
    private String titel;
    private String artist;
    private int length;
    Publisher publisher;

    public void setPublisher(String name, String phoneNumber) {
        // 先创建Publisher实例,再调用setter方法
        this.publisher = new Publisher();
        publisher.setName(name);
        publisher.setPhoneNumber(phoneNumber);
    }
}
方式2:在Cd构造器/成员声明时提前实例化

如果希望publisher对象在Cd创建时就存在,可提前初始化:

public class Cd {
    private String titel;
    private String artist;
    private int length;
    // 声明时直接实例化
    Publisher publisher = new Publisher();

    public void setPublisher(String name, String phoneNumber) {
        publisher.setName(name);
        publisher.setPhoneNumber(phoneNumber);
    }
}

补充说明

如果需要限制publisher只能被初始化一次,可结合构造器和私有访问控制,避免重复创建实例。

内容的提问来源于stack exchange,提问作者brah79

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:40:34