Mam kilka stałe teksty z name
własności i byName
metody, która jest mniej więcej tak dla nich wszystkich:Faktoring się metodę występujący w wielu teksty stałe
public static Condition byName(String name) throws NotFoundException {
for (Condition c : values()) {
if (c.name.equals(name)) {
return c;
}
}
throw new NotFoundException("Condition with name [" + name + "] not found");
}
Ponieważ metoda byName
jest powielany w różnych teksty stałe, Chciałbym to złożyć w jednym miejscu i uniknąć duplikowania kodu.
Jednakże:
- wyliczenia nie można rozszerzyć klasę abstrakcyjną
- Java8 interfejsy z metod domyślnych nie może uzyskać dostępu do metody
values()
wiem, może to prawdopodobnie być wykonane z AspectJ, ale I” Nie należy raczej wprowadzać kompilacji w czasie do czegoś prostego, a Spring AOP (który mam pod ręką, ponieważ jest to projekt wiosenny) pozwala tylko na wiązanie z istniejącymi metodami i nie dodawanie nowych.
Jakieś inne możliwe rozwiązanie, aby dodać wspólną metodę do wyliczenia?
nie można zawinąć te teksty stałe do innej klasy (jeden za enum class) ... A ta klasa rozszerzyłaby klasę abstrakcyjną o tę metodę "byName"? –