-2

我在获取这个方法时遇到了很多麻烦:SmallBank 中有一个名为 printBankDetails 的方法,它打印出存储的 BankAccounts 的详细信息。此方法适用于只有一个 BankAccount 以及有两个 BankAccount 的情况。您可以检查 account2 实例变量中是否有值,如下所示。我不知道如何获取我创建的原始类型 account1 和 account2 的值,然后打印该值。有什么建议么?

public class SmallBank
{
    private BankAccount account1;
    private BankAccount account2;

    public SmallBank(String name, int balance)
    {
        account1 = new BankAccount(name, balance);
        account2 = null;
    }

    public void addSecondAccount(BankAccount newAccount)
    {
        account2 = newAccount;
    }

    public void printBlankDetails()
    {
        account1.getDeclaredFields();
        String name = field.getName();
        Int balance = field.getBalance();
        System.out.println(b);

    }
}
4

3 回答 3

0

首先,account1并且account2不是原始类型。

此外,您可以非常简单地访问两者,如下所示。

public void printBlankDetails()
{
    String name1 =  account1.getName();


    String name2 =  account2.getName();

}

ps 你的功能有很多问题printBlankDetails,所以我没有尝试复制它。

于 2013-01-31T05:56:37.100 回答
0

您可以将 BankAccount 声明为:

class BankAccount {

    private int balance;
    private String name;

    public BankAccount (String name, int balance) {
        this.name = name;
        this.balance = balance;
    }

    public String getName () {
        return name;
    }

    public int getBalance () {
        return balance;
    }

}

然后调用 SmallBank 类中的方法:

public void printBankDetails () {
    System.out.println("Account 1:");
    System.out.println("Name: " + account1.getName());
    System.out.println("Balance: " + account1.getBalance());
}
于 2013-01-31T06:04:39.187 回答
0

另一种设计是printDetails()BankAccount班级本身中有发言权。就像是:

public class BankAccount {
  String name;
  int balance;
  ...
  ...

  public String printDetails() {
      return (name + "/" + balance);
  }
}

然后在您的SmallBank::printBlankDetails()方法中使用它,如下所示:

printBlankDetails() {
   if(account1 != null) system.out.println(account1.printDetails());
   if(account2 != null) system.out.println(account2.printDetails());
}

BankAccountIMO,这种方法提供了更好的封装,隐藏了类的细节SmallBank

于 2013-01-31T06:08:28.287 回答