如何获得类的实例?

时间:2012-11-09 21:07:37

标签: java class

我有以下代码

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给定返回forrest,2给出返回随机)?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

您需要将您的资料存储在List中,然后按其索引检索列表项。

答案 2 :(得分:0)

更好

Customer customers[] = { forrest, random };

我可以使用customer[id]

调用该实例