java - 请帮我提供 self 引用指针

标签 java pointers parameters parameter-passing bluej

我写了两个类,第一个是Member,第二个是Store。我编写了一个可以从成员类创建对象的方法,我试图在成员类中编写 Store 类型的字段存储,我希望它存储对成员已进入的存储的引用。 有人告诉我这样做: memberRegister() 需要作为参数传递一个指向您当前所在的 Store 对象的指针。

事实上,Store对象需要能够告诉Member对象“指向我”。也就是说,Store 对象需要一个指向其自身的指针。 但我没明白

这是成员(member)级别

private int pinNumber;
private String name, id; 
private Store store;


/**
 * Constructor for objects of class Member
 */
public Member(String name, String id, int pinNumber, Store store)

{
    // initialise instance variables
    this.name = name;
    this.id = id;
    this.pinNumber = pinNumber;
    checkId();
    checkPinNumber();
}

/**
 * An example of a method - replace this comment with your own
 * 
 * @param  y   a sample parameter for a method
 * @return     the sum of x and y 
 */
private void checkId()
{
    // put your code here
    int length; 
     length = id.length();
    if (length > 10 ){
        System.out.println("lentgh must be at 10 ");
    }
}
private void checkPinNumber()
{
    int length; 
     length = id.length();
    if ((length > 4) && (length < 4 )){
        System.out.println("lentgh must be at 4"); 
}

类商店

   private String storeName;
private int total; 
private  Member member;


/**
 * Constructor for objects of class Store
 */
public Store(String storeName, int total)
{
    // initialise instance variables
    this.storeName = storeName;
    this.total = total;
}

/**
 * 
 */
public String getStoreName() 
{
return storeName;
}

/**
 * An example of a method - replace this comment with your own
 * 
 * @param  y   a sample parameter for a method
 * @return     the sum of x and y 
 */
public Member memberRegister(String name, String id, int pinNumber)
{
    // put your code here
   Member member;
   member = new Member(name, id, pinNumber)
   return member;
}

最佳答案

您的 memberRegister 方法未正确调用您的 Member 构造函数:

public Member memberRegister(String name, String id, int pinNumber)
{
    // put your code here
   Member member;
   member = new Member(name, id, pinNumber, this) //this passes in a reference to your store
   return member;
}

然后在成员构造函数中分配引用:

public Member(String name, String id, int pinNumber, Store store)

{
    // initialise instance variables
    this.name = name;
    this.id = id;
    this.store = store //where this.store is a Store
    this.pinNumber = pinNumber;
    checkId();
    checkPinNumber();
}

希望有帮助。顺便说一句,以与您的代码相匹配的方式更新注释。

关于java - 请帮我提供 self 引用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13435074/

相关文章:

php - 函数参数变量的命名约定?

python - 在 pytest 中是否可以访问参数化装饰器中的命令行参数?

java - IBM JVM参数-Xcodecache的含义

java - 由 : org. springframework.data.mapping.PropertyReferenceException 引起:未找到产品类型的属性聚合

java - 类要求继承抽象的未实现方法

java - 如何解压并且解压时不创建子目录

c++ - 返回对未定义指针的引用

java - Voip电话在android中开发

c - 如何忽略 '\40' 表达式并只输出单元格文本

c++ - 指针失败 (C++)