Enum zawierający inny enum- problem z jego wartością

0

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?

3
S-cat napisał(a):

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

Jakaś bezedura.

2

Opowiadasz bzdury.
http://ideone.com/gtTzPg

0

Jak zwykle macie rację, Panowie. :) Problem leżał w zupełnie dla mnie niespodziewanym miejscu.

Dziękuję wam bardzo, miłego wieczoru. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1