import java.util.Arrays;
import java.util.Optional;
class EnumMagic {
public enum CatBreed {
DOMESTIC_SHORTHAIR("Domestic Shorthair"),
DOMESTIC_LONGHAIR("Domestic Longhair"),
PERSIAN("Persian"),
MAINE_COON("Maine Coon"),
SIAMESE("Siamese"),
AMERICAN_SHORTHAIR("American Shorthair"),
ABYSSINIAN("Abyssinian"),
EXOTIC_SHORTHAIR("Exotic Shorthair"),
RAGDOLL("Ragdoll"),
BURMESE("Burmese"),
HIMALAYAN("Himalayan");
private final String englishName;
private CatBreed(String englishName) {
this.englishName = englishName;
}
public String getEnglishName() {
return englishName;
}
public String toFilename() {
return englishName.replaceAll("[^a-zA-Z]", "_").toLowerCase() + ".txt";
}
public static Optional<CatBreed> get(String englishName) {
return Arrays.stream(CatBreed.values())
.filter(b -> b.englishName.equals(englishName)).findFirst();
}
public String toString() {
return englishName + " [" + name() + "]: " + toFilename();
}
}
public static void main(String[] args) {
System.out.println("Cat Breeds:");
for (CatBreed breed : CatBreed.values()) {
System.out.println(breed);
}
System.out.println("----");
System.out.println(CatBreed.MAINE_COON);
System.out.println(CatBreed.valueOf("AMERICAN_SHORTHAIR"));
Optional<CatBreed> exoticShorthair = CatBreed.get("Exotic Shorthair");
System.out.println(exoticShorthair.isPresent() ? exoticShorthair.get() : "Don't know that breed");
}
}