Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Enumeration classes in Java

Tags:

java

I have one class that declares an enumeration type as:

public enum HOME_LOAN_TERMS {FIFTEEN_YEAR, THIRTY_YEAR};

Is this type usable in another class? I'm basically trying to complete a homework assignment where we have two types of loans, and one loanManager class. When I try to use the HOME_LOAN_TERMS.THIRTY_YEAR in my loanManager class that does not extend or implement the loan class, I get an error saying it 'cannot find symbol HOME_LOAN_TERMS.' So I did not know if my loanManager class needed to implement the two different loan classes. Thanks.

I'm currently working on this so I know it's not complete, but here is where I tried to use it:

import java.util.ArrayList;

public class AcmeLoanManager 
{
    public void addLoan(Loan h)
    {
        loanArray.add(h);
    }
    /*
    public Loan[] getAllLoans()
    {
    }

    public Loan[] findLoans(Person p)
    {
    }

    public void removeLoan(int loanId)
    {
    }
    */
    private ArrayList<Loan> loanArray = new ArrayList<Loan>(5);

    public static void main(String[] args)
    {
        AcmeLoanManager aLoanManager = new AcmeLoanManager();
        Person aPerson = new Person("Crystal", "Twix", "619-111-1234", "[email protected]");
        HomeLoan aHomeLoan = new HomeLoan(aPerson, 400000, 5, HOME_LOAN_TERMS.THIRTY_YEAR);
        aLoanManager.addLoan(aHomeLoan);
    }
}
like image 866
Crystal Avatar asked Apr 01 '26 05:04

Crystal


1 Answers

You have to specify the type:

HOME_LOAN_TYPES type = HOME_LOAN_TYPES.FIFTEEN_YEAR;

By the way, don't use this naming convention for enums. Use the same camel case you do for classes so:

public enum HomeLoanType {
  FIFTEEN YEAR,
  THIRTY_YEAR
}

If you don't want to specify the type you can do a static import:

import static package.name.HomeLoanType.*;

...

HomeLoanType type = FIFTEEN_YEAR;

Lastly, one of the best things about Java enums is they can have state and behaviour. For example:

public enum HomeLoanType {
  FIFTEEN YEAR(15),
  THIRTY_YEAR(30);

  private final int years;

  HomeLoanType(int years) {
    this.year = years;
  }

  public int getYears() {
    returns years;
  }
}
like image 157
cletus Avatar answered Apr 03 '26 20:04

cletus



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!