Extending a enum in Java
You can implement a common interface
interface I { }
enum A implements I {
A, B
}
enum B implements I {
C
}
public void functionA(I i) {
//do something
}
obj.functionA(A.A);
obj.functionA(B.C);
You can't.
Enum types are final by design.
The reason is that each enum type should have only the elements declared in the enum (as we can use them in a switch statement, for example), and this is not possible if you allow extending the type.
You might do something like this:
public interface MyInterface {
// add all methods needed here
}
public enum A implements MyInterface {
A, B;
// implement the methods of MyInterface
}
public enum B implements MyInterface {
C;
// implement the methods of MyInterface
}
Note that it is not possible to do a switch
with this interface, then. (Or in general have a switch
with an object which could come from more than one enum
).