2012-11-09 129 views
0

我有以下代码如何获得一个类的实例?

class driver{ 
     static BankAccount GetAccount(Customer customer, char c) { 
      BankAccount accSrc = customer.S; 
      // savings account 
      if (c =='S') { 
       accSrc = customer.S; 
      // loan account 
      } else if (c =='L') { 
       accSrc = customer.L; 
      // checking account 
      } else if (c =='C') { 
       accSrc = customer.C; 
      // auto loan account 
      } else if (c =='A') { 
       accSrc = customer.A; 
      } 
      return accSrc; 
     } 
     public static void main(String[] args) { 
      // TODO Auto-generated method stub 
      Customer forrest = new Customer("Forrest Gump", 1, "42 New Street, New York, New York"); // me 
      Customer random = new Customer("Random Name", 2, "44 New Street, New York, New York"); // imaginary partner 
      //try{ 
       String input = JOptionPane.showInputDialog("Please enter your transaction information: "); 
       Scanner s = new Scanner(input); 
       int id = Integer.parseInt(s.next()); 
       char action = Character.toUpperCase((s.next().charAt(0))); 
       char accSrc = ' '; 
       char accDest = ' '; 
       double amount = 0; 

       if(action == 'T'){ 
        amount = s.nextDouble(); 
        accSrc = s.next().charAt(0); 
        accDest = s.next().charAt(0); 
       }else if(action == 'G' || action == 'I'){ 
        accSrc = s.next().charAt(0); 
       }else{ 
        //if D,W 
        amount = s.nextDouble(); 
        accSrc = s.next().charAt(0); 
       } 

      //}catch (IOException e){ 

      //} 
       if(id==1){ 
        return forrest; 
       }else if(id == 2){ 
        return random; 
       } 
       BankAccount src = GetAccount(forrest, accSrc); 
       System.out.print(src.getOwner().name); 
       if(action == 'T'){ 
        BankAccount dst = GetAccount(forrest, accDest); 
        src.transfer(amount, dst); 
. 

    .. 
    } 

    class Customer{ 
     protected String name; 
     protected int id; 
     protected String address; 
     protected BankAccount C = new BankAccount(id, this, 0); 
     protected BankAccount S = new BankAccount(id, this, 0); 
     protected BankAccount A = new BankAccount(id, this, 0); 
     protected BankAccount L = new BankAccount(id, this, 0); 
    ... 
    } 

目前即时通讯硬编码的BankAccount src = GetAccount(forrest, accSrc);我如何可以继续编写代码,以便它返回给定的ID号的客户的一个实例(比如1倍中给出的回报阿甘,2倍中给出的回报随机)?

回答

0

更好的

Customer customers[] = { forrest, random }; 

我可以打电话与customer[id]

0

您需要将您的东西存储在List中,然后通过索引检索列表项。

3

将你的课程放在Map例如

Map<Integer, Customer> classMap = new HashMap<Integer, Customer>(); 
Customer forrest = 
     new Customer("Forrest Stallings", 1, "42 New Street, New York, New York"); 
classMap.put(1, forrest); 

Customer random = 
     new Customer("Random Name", 2, "44 New Street, New York, New York"); 
classMap.put(2, random); 

然后,只需让你的班级为:

Customer forrest= classMap.get(1); 
Customer random = classMap.get(2); 
+0

实例,这是唯一的办法? – user133466

+0

@ user133466根据您的需求,可能会有更多,但考虑到这种情况,这是最简单的,并达到目的。 –

+0

@ user133466有很多方法,这确实是一个。您可以使用列表,数组,文件甚至数据库。事实上,如果你仍然是硬编码的东西,这是最简单的解决方案。 – Gamb

相关问题