簡體   English   中英

Java中的枚舉類

[英]Enumeration classes in 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);
    }
}

您必須指定類型:

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;
  }
}

是的,因為它是公開的,你可以從另一個類使用它。

如果它在您的貸款類中,您編寫Loan.HOME_LOAN_TERMS.FIFTEEN_YEAR以從其他類引用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM