Inside an instance method, you can refer to the "current enum
object" as simply this
. It works this way because enum
constants are actual objects, i.e. instances of a class
-- a very special type of class
, but a class
nonetheless. (Note that I mentioned that these are enum
constants: it is the convention in Java to use all uppercase letters when naming constants.)
Your usage of values()
is also very peculiar (not to mention that it'll perform horribly since a new array must be constructed at each call). Perhaps you'd want to take a look at EnumMap
, which is a special kind of Map
optimized for enum
constants as keys.
If you're trying to mutate fields contained in these enum
constants, then you should seriously consider a redesign. You should generally minimize mutability anyway, but having these static
singletons be mutable does not sound like a good design. Instead of having these mutable fields intrinsic within the enum
constants themselves, a Map
from the constants to these mutable values would be a much better design.
See also
- Java Tutorials/
enum
- Effective Java 2nd Edition
- Item 15: Minimize mutability
- Item 31: Use instance fields instead of ordinals
- Item 32: Use
EnumSet
instead of bit fields
- Item 33: Use
EnumMap
instead of ordinal indexing
Various questions on Java enum