W całym naszym projekcie mamy tego rodzaju wyliczenia. Działają dobrze, ale nie jesteśmy do końca pewni.czy moje wyliczenie jest poprawne?
Specjalnie z metodą getDocumentType (String).
Czy istnieje sposób na uniknięcie iteracji na wszystkich polach Enums?
public enum DocumentType {
UNKNOWN("Unknown"),
ANY("Any"),
ASSET(Asset.class.getSimpleName()),
MEDIA(Media.class.getSimpleName()),
MEDIA35MM(Media.class.getSimpleName() + " 35mm");
private String label;
private DocumentType(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
public static DocumentType getDocumentType(String label){
for(DocumentType documentType : DocumentType.values()){
if(documentType.getLabel().equals(label)){
return documentType;
}
}
return UNKNOWN;
}
}
Edytuj: Sprawdź odpowiedź newacct. Ona też jest w porządku.
To kuszące, aby zapisać mapie statycznej etykiet do wyliczenia wystąpień, ale denerwująco, Java nie pozwala odwoływać się do pola statycznego od konstruktora enum jest. – skaffman
Zastanawiam się, dlaczego używasz Asset.class.getSimpleName() zamiast pisać "Zasób"? Czy planujesz zmienić nazwę przez refaktoryzację? – akarnokd
Czy używanie tekstów klas zamiast ciągów zawsze jest dobrą praktyką? – skaffman