How to define abstract enum ?

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

}