Typesafe enumerations |
Typesafe enumerations are classes with a private constructor and only a few defined instances. Each instance does have a name and a value. As of Java 1.5, they will be part of the Java language. For those of us, who are still stuck with older versions, a source generator is a good solution.
<enumGenerator targetClass="org.apache.ws.jaxme.js.junit.EnumExample" destDir="${build.src}"> <item name="JOE" value="John Doe"/> <item name="POPEYE" value="Olivia's Lover"/> <item name="DONALD" value="The Duck King"/> </enumGenerator>
This will generate a class looking roughly like this:
public class EnumExample { private String name; private String value; private EnumExample(String pName, String pValue) { name = pName; value = pValue; } public String getName() { return name; } public String getValue() { return value; } public final static EnumExample JOE = new EnumExample("JOE", "John Doe"); public final static EnumExample POPEYE = new EnumExample("POPEYE", "Olivia's Lover"); public final static EnumExample DONALD = new EnumExample("DONALD", "The Duck King"); }
The important thing with this enumeration is that there cannot be other instances besides JOE, POPEYE and DONALD.