1

別のファイル内の別のクラス内にある別の関数からセッターとゲッターを呼び出そうとしています。ここに私が得ているものがありますが、何が間違っているのか本当にわかりません...

Bank.java

package Bank;

import java.io.*;
import java.util.*;

public class Bank
{
  public static void main (String args[]) throws FileNotFoundException
  {
     final String fileName = "Bank/AcctInfo.txt";
     File accounts = new File(fileName);

     ArrayList <Object> acctInfo = new ArrayList <Object> ();
        acctInfo = setObjects(accounts);
  }

  public static ArrayList setObjects(File document) throws FileNotFoundException
  {
     ArrayList <Object> objectArray = new ArrayList <Object> ();

     Scanner fileInput = new Scanner(document);

     String blankInfo;
     String accountType;
     String customerType;
     String customerName;

     int accountNumber;

     float balance;

        int counter = 0;    

     while (fileInput.hasNext())
     {

        accountNumber = fileInput.nextInt();
        blankInfo = fileInput.nextLine();

        accountType = fileInput.nextLine();

        customerName = fileInput.nextLine();

            customerType = fileInput.nextLine();

        balance = fileInput.nextFloat();
        blankInfo = fileInput.nextLine();

            objectArray.add(new BankAccount());

            objectArray.get(counter).setAccNumber(accountNumber);

            counter++;

     }

     return objectArray;
  }
}

BankAccount.java

package Bank;

public class BankAccount extends Bank
{       
    private int accNumber;
    private String accType;
    private String cusName;
    private String cusType;
    private float bal;

    public void setAccNumber(int accountNumber)
    {
        int accNumber = accountNumber;
    }

    public int getAccNumber()
    {
        return accNumber;
    }

    public void setAccType(String accountType)
    {
        String accType = accountType;
    }

    public String getAccType()
    {
        return accType;
    }

    public void setCusName(String customerName)
    {
        String cusName = customerName;
    }

    public String getCusName()
    {
        return cusName;
    }

    public void setCusType(String customerType)
    {
        String cusType = customerType;
    }

    public String getCusType()
    {
        return cusType;
    }

    public void setBal(float balance)
    {
        float bal = balance;
    }

    public float getBal()
    {
        return bal;
    }
}

エラー:

Bank.java:51: error: cannot find symbol
            objectArray.get(counter).setAccNumber(accountNumber);
                                    ^
symbol:   method setAccNumber(int)
location: class Object
Note: .\Bank\Bank.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

まだ完成していませんが、誰かが私を少し助けてくれれば、それは大きな助けになります...

4

4 に答える 4

1

あなたはこれをやっているからです:

ArrayList <Object> objectArray = new ArrayList <Object> ();

あなたが言ったので、そこにあるリストは中身が何であるかを知りませんObject.

あなたがそれを作るなら

ArrayList <BankAccount> objectArray = new ArrayList <BankAccount> ();

期待どおりに動作するはずです。

于 2013-11-12T22:44:46.500 に答える
1

BankAccountのアイテムでのメソッドを使用する場合ArrayListは、それが BankAccounts のリストであることを指定する必要があります。具体的には、ライン

ArrayList <Object> objectArray = new ArrayList <Object> ();

本当にあるべき

ArrayList <BankAccount> objectArray = new ArrayList <BankAccount>();

ジェネリックは、リストを持っているものを指定するものと考えることができます。したがって、最初の例では、「オブジェクトの ArrayList」と読むことができます。それらが BankAccounts であるかどうかわからないため、settAccNumber()それらを呼び出すことができるかどうかはわかりません。

2 番目の例では、「BankAccounts の ArrayList」と読むことができます。この場合、それらが BankAccounts であることがわかっているので、それらを呼び出すことができることがわかりますsetAccNumber()

ここではジェネリックについてのレッスンをします。

ここには、それらに関するオラクルのドキュメントもあります。

于 2013-11-12T22:45:57.183 に答える
1

他の答えは正しく使用を示唆していますArrayList<BankAccount>

(何らかの奇妙な理由で) 実行できない、または実行したくない場合はcast、取得したリスト要素を暗黙的にBankAccount入力する必要があります。

君の

 objectArray.get(counter).setAccNumber(accountNumber);

となります

  ((BankAccount)objectArray.get(counter)).setAccNumber(accountNumber);
于 2013-11-12T22:52:52.743 に答える