Java中的枚举类

时间:2010-04-26 02:55:08

标签: java

我有一个类将枚举类型声明为:

public enum HOME_LOAN_TERMS {FIFTEEN_YEAR, THIRTY_YEAR};

这种类型可以在另一个类中使用吗?我基本上是在尝试完成一项家庭作业,我们有两种类型的贷款和一种loanManager类。当我尝试在我的loanManager类中使用不扩展或实现贷款类的HOME_LOAN_TERMS.THIRTY_YEAR时,我收到错误消息,说它“找不到符号HOME_LOAN_TERMS”。所以我不知道我的loanManager类是否需要实现两个不同的贷款类。感谢。

我目前正在研究这个,所以我知道它并不完整,但这里是我试图使用它的地方:

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", "ct@yahoo.com");
        HomeLoan aHomeLoan = new HomeLoan(aPerson, 400000, 5, HOME_LOAN_TERMS.THIRTY_YEAR);
        aLoanManager.addLoan(aHomeLoan);
    }
}

2 个答案:

答案 0 :(得分:7)

您必须指定类型:

HOME_LOAN_TYPES type = HOME_LOAN_TYPES.FIFTEEN_YEAR;

顺便说一下,不要对枚举使用这种命名约定。使用与类相同的驼峰案例:

public enum HomeLoanType {
  FIFTEEN YEAR,
  THIRTY_YEAR
}

如果您不想指定类型,可以执行静态导入:

import static package.name.HomeLoanType.*;

...

HomeLoanType type = FIFTEEN_YEAR;

最后,关于Java枚举的最好的事情之一是它们可以具有状态和行为。例如:

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

  private final int years;

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

  public int getYears() {
    returns years;
  }
}

答案 1 :(得分:1)

是的,因为它是公开的,你可以从另一个班级使用它。

如果它在您的贷款类中,您可以编写Loan.HOME_LOAN_TERMS.FIFTEEN_YEAR以从其他类别引用它。