При таком подходе мы бы возвращали не новый объект, а ссылку на уже созданный, если вызывали бы new Singleton() более одного раза
class Scratch {
public static void main(String[] args) {
System.out.println(Gender.parse("жен"));
System.out.println(Gender.parse("муж"));
System.out.println(Gender.parse("человек"));
}
}
enum Gender {
MALE("муж"), FEMALE("жен");
private final String value;
Gender(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public static Gender parse(String token) {
return switch (token) {
case "муж" -> Gender.MALE;
case "жен" -> Gender.FEMALE;
default -> throw new IllegalArgumentException();
};
}
}
FEMALE
MALE
Exception in thread "main" java.lang.IllegalArgumentException
at Gender.parse(scratch_2.java:27)
at Scratch.main(scratch_2.java:7)