Enum with negative/gap value in Java -
i have problem enum in java. have enum starts -1
:
public enum aiptype { unknown(-1), none(0), aipmod(1), aipnomod(2); private final int id; aiptype(int id) {this.id = id;} public int getvalue() {return id;} }
the problem when use code initialize var of aiptype
aiptype @ = aiptype.getvalues()[index];
where index
number in interval [-1,0,1,2]
-1
mess value. i.e. 0 returns unknown, 1 returns aipmod , 2 returns aipnomod.
i used implementation because need set manually numeric value each enum case. in other case have gap beetwen values have same problem: cannot use values()
, access [ ]
.
i tried initialize in way
aiptype @ = aiptype(index);
but doesn't work.
ideas ? thanks...
we don't know getvalues()
method you're using doing. supposed values()
.
anyway, can add static
method in enum
, returns correct enum
instance value, , invoke wherever need it:
public enum aiptype { unknown(-1), none(0), aipmod(1), aipnomod(2); private final int id; aiptype(int id) {this.id = id;} public int getvalue() {return id;} public static aiptype fromvalue(int id) { (aiptype aip: values()) { if (aip.getvalue() == id) { return aip; } } return null; } }
if you're invoking fromvalue()
often, might want cache array returned values()
inside enum
itself, , use it. or better, map
better idea.
Comments
Post a Comment