Перечисление классов в Java - PullRequest
3 голосов
/ 26 апреля 2010

У меня есть один класс, который объявляет тип перечисления как:

public enum HOME_LOAN_TERMS {FIFTEEN_YEAR, THIRTY_YEAR};

Этот тип можно использовать в другом классе? Я в основном пытаюсь выполнить домашнее задание, где у нас есть два типа кредитов и один класс loanManager. Когда я пытаюсь использовать HOME_LOAN_TERMS.THIRTY_YEAR в своем классе loanManager, который не расширяет или не реализует класс ссуды, я получаю сообщение об ошибке, в котором говорится, что «невозможно найти символ 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 ]

7 голосов
/ 26 апреля 2010

Вы должны указать тип:

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 голос
/ 26 апреля 2010

Да, поскольку он общедоступен, вы можете использовать его из другого класса.

Если он входит в ваш класс Loan, вы пишете Loan.HOME_LOAN_TERMS.FIFTEEN_YEAR, чтобы ссылаться на него из другого класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...