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

BlueJ环境下如何从其他类获取Id、Name字段到当前Store类使用

解决方案

问题核心原因

你当前的代码存在3个核心问题:

  • 没有定义存储Id、Name字段的目标类,Store类本身没有这两个属性,直接在getMember()中返回会直接编译报错
  • 同一个方法内连续写两个return语句无效,第一个return执行后方法就会终止运行,第二条返回逻辑永远不会触发
  • 你定义的private Store member;属性类型错误,你需要关联的是存储会员信息的类,而非Store类自身

第一步:新增会员信息类

首先新建Member类,用来封装会员的id和name属性:

public class Member {
    private String id;
    private String name;

    // 构造方法,初始化会员id和name
    public Member(String id, String name) {
        this.id = id;
        this.name = name;
    }

    // 对应属性的getter方法
    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }
}

第二步:修改Store类代码

修改后的Store类代码如下:

public class Store
{
    public String storeName;
    public int total;
    // 将属性类型从Store改为Member,存储会员对象
    private Member member;
    
    public Store(String newStoreName, int newTotal)
    {
        storeName = newStoreName;
        total = newTotal;
    }
    
    public String getStoreName()
    {
        return storeName;
    }

    public int getTotal()
    {
        return total;
    }

    // 新增设置会员的方法,给member属性赋值
    public void setMember(Member member) {
        this.member = member;
    }

    // 单独获取会员id
    public String getMemberId() {
        // 先判空避免空指针异常
        return member == null ? null : member.getId();
    }

    // 单独获取会员name
    public String getMemberName() {
        return member == null ? null : member.getName();
    }

    // 如果需要一次性返回完整会员信息可以用这个方法
    public String getMemberFullInfo() {
        if (member == null) {
            return "无注册会员";
        }
        return "会员ID:" + member.getId() + ",会员姓名:" + member.getName();
    }
    
    public void memberRegister1()
    {
        System.out.println("Salford Thrifty Store welcomes");
    }
}

调用示例

你可以在测试类或者BlueJ的交互界面按以下逻辑调用:

// 先创建会员对象
Member member1 = new Member("M001", "张三");
// 创建门店对象
Store store = new Store("索尔福德节俭店", 100);
// 给门店绑定注册会员
store.setMember(member1);
// 调用方法获取会员信息
System.out.println(store.getMemberFullInfo());
System.out.println("会员ID:" + store.getMemberId());
System.out.println("会员姓名:" + store.getMemberName());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:06:04