semana recorrer que programacion herencia enum dias clase java interface enums enumeration

recorrer - que es un enum en java



implementación enum dentro de la interfaz-Java (4)

Tengo una pregunta sobre cómo poner una enumeración de Java en la interfaz. Para hacerlo más claro, vea el siguiente código:

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(); ... }

Sé que una interfaz consiste en métodos con cuerpos vacíos . Sin embargo, la enumeración que utilicé aquí necesita un constructor y un método para obtener un valor asociado. En este ejemplo, la interfaz propuesta no solo consistirá en métodos con cuerpos vacíos. ¿Está permitida esta implementación?

No estoy seguro de si debería poner la clase enum dentro de la interfaz o la clase que implementa esta interfaz.

Si pongo la enumeración en la clase que implementa esta interfaz, entonces el método público Número getNumber () necesita devolver el tipo de enumeración, lo que me obligaría a importar la enumeración en la interfaz.


Ejemplo de las cosas anteriores se enumeran a continuación:

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


En resumen, sí, esto está bien.

La interfaz no contiene ningún cuerpo de método; en cambio, contiene lo que usted llama "cuerpos vacíos" y más comúnmente conocido como firmas de métodos .

No importa que la enum esté dentro de la interfaz.


Es perfectamente legal tener una enum declarada dentro de una interface . En su situación, la interfaz solo se usa como espacio de nombres para la enumeración y nada más. La interfaz se usa normalmente donde sea que la use.


Si, es legal En una situación "real" Number implementaría Thing, y Thing probablemente tendría uno o más métodos vacíos.