Returning an object in a Vector.

I have the following definition of a class:


class Bank {
     private Vector accounts;

     Bank() { // Constructor
          accounts = new Vector();
     }

     public void addAccount(BankAccount newAccount) {
          accounts.add(newAccount);
     }

     public BankAccount getAccount(int index) {

     return (accounts.get(index));

         
     }

A class named "BankAccount" has already been defined, containing a few Strings and Doubles. However, I want Bank.getAccount to return a BankAccount class when it is called, as I have attempted to do so above. However, the statement "return (accounts.get(index));" states that there is an "Incompatible type" error.

I know that the get() method returns an Object, but isn't the getAccount() method already defined as returning an Object? What am I doing wrong?

If you need more information, please let me know.
esotericleteAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
yorenConnect With a Mentor Commented:
You've declared your getAccount() method to return a BankAccount. However, Vector.get() returns an Object. You have to *cast* the result to a BankAccount:

public BankAccount getAccount(int index) {
  return (BankAccount) accounts.get(index);
}
0
 
esotericleteAuthor Commented:
Is this the case for every single method that returns an Object, but does not explicitly state what type of Object it returns?
0
 
yorenCommented:
Yes. The key here is that you're trying to return an Object in place of a BankAccount. Every BankAccount is an Object, but not every Object is a BankAccount. That's why you have to cast in this case.

If it were the reverse (returning a BankAccount instead of an Object), then it would be valid, since every BankAccount is  an Object:

public Object someMethod() {
  BankAccount acct = new BankAccount();
  return acct;
}
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.