Ing. Jan Novotný napsal(a): > Zdravím konferenci, > > dokážete někdo vysvětlit proč při přístupu k metodám Java enum > typu, který mám definován takto: > > public enum QueryStatus implements HasValue { > INSERTED { > public Integer getValue() { return 0; } > public String getLabel() { return "vloženo"; } > }, > ALLOWED { > public Integer getValue() { return 1; } > public String getLabel() { return "schváleno"; } > }, > FORBIDDEN { > public Integer getValue() { return 2; } > public String getLabel() { return "zamítnuto"; } > } > } > > vyhazuje java IllegalAccessException? Podaří se mi získat i object > Method pro danou getter metodu, ale když se zavolá metoda invoke, > vyletí vyjímka IllegalAccessException. Nějak se mi nepodařilo nic > vygůglit, tak si nedokážu vysvětlit, kde je problém. > > Honza N. > > Co třeba to napsat takto?
public enum QueryStatus implements HasValue { INSERTED(0, "vlozeno"), ALLOWED(1, "schvaleno"), FORBIDDEN(2, "zamitnuto"); private Integer value; private String label; private QueryStatus(Integer value, String label) { this.value = value; this.label = label; } public Integer getValue() { return value; } public String getLabel() { return label; } public static QueryStatus findQueryStatusByValue(Integer value) { if (value == null) { return QueryStatus.FORBIDDEN; } for (QueryStatus qs : QueryStatus.values()) { if (qs.equals(value)) { return qs; } } return QueryStatus.FORBIDDEN; } } Dokonce je možné napsat statickou metodu, která podle zadaného parametru value vrátí přímo výčtový typ. viz. metoda public static QueryStatus findQueryStatusByValue(Integer value); Fafi