Normalmente, dado que estamos trabajando en Java, y generalmente nos oponemos al diseño OO, puede obtener esta funcionalidad a través de la extensión. Sin embargo, las enumeraciones extienden java.lang.Enum implícitamente y, por lo tanto, no pueden extender otra clase.
Esto significa que la extensibilidad para enums se deriva de una fuente diferente.
Joshua Bloch lo dice en Effective Java: Second Edition en el elemento 34, cuando presenta un patrón de interfaz compartido para enums. Aquí está su ejemplo del patrón:
public interface Operation {
double apply(double x, double y);
}
public enum BasicOperation implements Operation {
PLUS("+") {
public double apply(double x, double y) { return x + y; }
},
MINUS("-") {
public double apply(double x, double y) { return x - y; }
},
TIMES("*") {
public double apply(double x, double y) { return x * y; }
},
DIVIDE("/") {
public double apply(double x, double y) { return x/y; }
}
Esto es lo más cerca que se puede llegar al estado compartido cuando se trata de enumeraciones. Como dijo Johan Sjöberg anteriormente, podría ser más fácil simplemente combinar las enumeraciones en otra enumeración.
¡La mejor de las suertes!
¿por qué tendrías que extender una enumeración? – Woot4Moo