访问在另一个类中创建的任何对象

时间:2014-03-08 17:57:01

标签: java class object

我对编程很新,而且我已经坚持了一段时间了,所以任何指导我指向正确方向的帮助都会非常感激!

我正在处理臭名昭着的银行帐户计划,并且无法从其他班级访问特定对象。我有两个班,Customer和Banklogic。 Customer类显然创建了具有社会保险号(pnr)和名称的客户对象。 Banklogic类使用不同的方法处理和操作这些对象,例如将它们添加到银行或更改其名称。

我的问题是,当我创建了三个客户对象时,我唯一可以访问的是最后创建的客户对象。我需要能够访问任何对象才能调用它们的方法。

这是Customer类的构造函数:

public Customer(long pNr, String name) { this.pNr = pNr; this.name = name; }

这是在BankLogic类中添加新客户到银行的方法(带有一些不同的列表):

public boolean addCustomer(String name, long pNr)
{
    if(!pNrList.contains(pNr))                                  
    {
        customer = new Customer(pNr, name);
        customerList.add(customer);
        String client = Long.toString(customer.getpNr()) + "     " + customer.getName();
        kunder.add(client);
        pNrList.add(pNr);
        return true;
    }
    else return false;
}

如果我在测试者类或BankLogic类中创建三个对象,如下所示:

public static void main(String[] args)
{
    BankLogic a = new BankLogic();
    a.addCustomer("JEAN", 66);
    a.addCustomer("JEN", 67);
    a.addCustomer("ANNA", 70);
}

当我尝试使用Customer类中的getter方法访问其中一个时,唯一返回的对象是最后创建的对象,在这种情况下:

  

Anna 70

我认为来自Customer类的getter方法存在问题:

public long getpNr() 
{
    return pNr;
}

我也试过了另一个getter mehod,它也不会起作用:

public long getpNr(long pNr) 
{       
    if(this.pNr == pNr)
    {
        return pNr;
    }
    else return -1;
}

BankLogic类中的customerList是一个包含Customer对象的Arraylist,但我无法弄清楚如何从中访问不同的对象(如果可能的话)。

PS 这是我在这里的第一篇文章,所以请原谅任何错误,或者这已经在其他地方得到了解答。 谢谢/约翰

1 个答案:

答案 0 :(得分:1)

您只创建类BankLogic的单个对象,并且只通过调用方法addCustomer来更新同一对象的属性(name和pnr)。更新代码如下,创建3个不同的对象: / p>

BankLogic a = new BankLogic();
    a.addCustomer("JEAN", 66);
BankLogic b = new BankLogic();
    b.addCustomer("JEN", 67);
BankLogic c = new BankLogic();
    c.addCustomer("ANNA", 70);

编辑: 使用下面的代码然后列表的大小将是3并且将反映正确的名称/ pnr

    ArrayList<BankLogic> obj = new ArrayList<BankLogic>();
        BankLogic a = new BankLogic();
        a.addCustomer("JEAN", 66);
        obj.add(a);
        a = new BankLogic();
        a.addCustomer("JEN", 67);
        obj.add(a);
        a = new BankLogic();
        a.addCustomer("ANNA", 70);
        obj.add(a);