接口内部的枚举实现 - Java

2022-09-01 04:39:54

我有一个关于在界面中放置Java枚举的问题。为了更清楚,请参阅以下代码:

public interface Thing{
   public enum Number{
       one(1), two(2), three(3);
       private int value;
       private Number(int value) {
            this.value = value;
       }
       public int getValue(){
        return value;
       }
   }

   public Number getNumber();
   public void method2();
   ...
}

我知道接口由具有空体的方法组成。但是,我在这里使用的枚举需要一个构造函数和一个方法来获取关联的值。在此示例中,建议的接口将不仅仅由具有空实体的方法组成。是否允许此实现?

我不确定我应该将枚举类放在接口内还是实现此接口的类中。

如果我将枚举放在实现此接口的类中,则方法公共 Number getNumber() 需要返回枚举的类型,这将强制我在接口中导入枚举。


答案 1

在 .在您的情况下,接口仅用作枚举的命名空间,仅此而已。无论您在哪里使用,该界面通常都可以使用。enuminterface


答案 2

下面列出了上述内容的示例:

public interface Currency {

  enum CurrencyType {
    RUPEE,
    DOLLAR,
    POUND
  }

  public void setCurrencyType(Currency.CurrencyType currencyVal);

}


public class Test {

  Currency.CurrencyType currencyTypeVal = null;

  private void doStuff() {
    setCurrencyType(Currency.CurrencyType.RUPEE);
    System.out.println("displaying: " + getCurrencyType().toString());
  }

  public Currency.CurrencyType getCurrencyType() {
    return currencyTypeVal;
  }

  public void setCurrencyType(Currency.CurrencyType currencyTypeValue) {
    currencyTypeVal = currencyTypeValue;
  }

  public static void main(String[] args) {
    Test test = new Test();
    test.doStuff();
  }

}