Enum in Java behaves like normal classes. So they can be abstract. In the case of abstract methods, enum entries need to define methods behaviour:
public class EnumTest {
private static enum Names {
MAN {
@Override
public String getName() {
return "Denis";
}
},
WOMAN {
@Override
public String getName() {
return "Angelina";
}
};
public abstract String getName();
}
@Test
public void should_correctly_get_abstract_enum_working() {
assertThat(Names.MAN.getName()).isEqualTo("Denis");
assertThat(Names.WOMAN.getName()).isEqualTo("Angelina");
}
}