Cześć! Mam zdefiniowanego takiego enuma:
public enum MenuItem {
ItemA("ItemALabel", 0, SomeEnum.A),
ItemB("ItemBLabel", 1, SomeEnum.B);
private String itemLabel;
private int positionIndex;
private SomeEnum someEnum;
private MenuItem(String itemLabel, int positionIndex, SomeEnum someEnum) {
this.itemLabel = itemLabel;
this.positionIndex = positionIndex;
this.someEnum = someEnum;
}
public String getItemLabel() {
return text;
}
public int getPositionIndex() {
return positionIndex;
}
public getSomeEnum() {
return this.someEnum;
}
}
Później chcę wywołać coś na kształt:
ArrayList<SomeEnum> list = new ArrayList<SomeEnum>();
for (MenuItem key : MenuItem.values()) {
list.add(key.getSomeEnum());
}
W liście spodziewałem się wartości SomeEnum.A oraz SomeEnumB. A zapisuje najwidoczniej tylko ostatnią z nich, bo wszystkie elementy listy mają wartość SomeEnum.B. Jeśli zamienię miejscami ItemA i ItemB w MenuItem, to do listy zapisują się same SomeEnum.A. Pozostałe pola działają prawidłowo- oznacza to, że Enum zdefiniowany wewnątrz enuma jest z definicji statyczny?
EDIT:
Pisząc ostatnie zdanie tego posta, uświadomiłem sobie, jak szukać w google i trafiłem na informacje które potwierdzają moje podejrzenia. :( Powinienem zatem wewnątrz MenuItem stworzyć
List<SomeEnum>
i inicjalizować ją razem z MenuItem czy da się to rozwiązać lepiej?