Powiedzmy mam prosty Enum nazywane Animal zdefiniowany jako:Jak "valueOf" enum z nazwą klasy?
public enum Animal {
CAT, DOG
}
i mam metody takie jak:
private static Object valueOf(String value, Class<?> classType) {
if (classType == String.class) {
return value;
}
if (classType == Integer.class) {
return Integer.parseInt(value);
}
if (classType == Long.class) {
return Long.parseLong(value);
}
if (classType == Boolean.class) {
return Boolean.parseBoolean(value);
}
// Enum resolution here
}
Co mogę umieścić wewnątrz tej metody do zwracania wystąpienie mojego wyliczenia, gdzie wartość jest typu classType?
Mam spojrzał na starając:
if (classType == Enum.class) {
return Enum.valueOf((Class<Enum>)classType, value);
}
Ale to nie działa.
Ale klasa nie zastępuje equals(), więc myślę, że equals() nie będzie działać, jeśli istnieje wiele programów ładujących klasy. – waxwing
Umm, myślę, że masz rację. Właściwie to nie wiem, jak wiele programów ładujących klasy współpracuje ze sobą, ani czy jest prawdopodobne (a nawet możliwe), że istnieje wiele instancji tego samego obiektu klasy. Być może można też użyć 'Class # isAssignableFrom()'. To powiedziawszy, używanie 'equals()' jest prawie błędne. –