Re: Enum mixin?
On 10/21/2011 2:37 PM, Robert Klemme wrote:
On 21.10.2011 23:19, A. W. Dunstan wrote:
I'm ok with leaving it the way it is, but does anyone know of a better
approach? Preferably one that's not so complex that it's worse than my
current state of affairs?
I don't think it gets any better. Even if you go away from enums and
create an abstract base class etc. you'll have to do the typing for the
values plus you need to take care of serialization etc.
I would have thought that an abstract base class would get you what you
need. Maybe I'm overlooking something. The second class here seems to
remove a lot of boilerplate, esp considering my IDE will write the
constructor for me (since it's the only one available).
package quicktest;
import java.io.Serializable;
public abstract class AbstactEnum implements Serializable {
private final int value;
private final String name;
public AbstactEnum(int value, String name) {
this.value = value;
this.name = name;
}
public String getName() {
return name;
}
public int getValue() {
return value;
}
}
final class CloudModel extends AbstactEnum {
/*
* value meaning
----- ---------
0 no clouds
1 cumulus
2 altostratus
18 cirrus */
public static final CloudModel NONE = new CloudModel(0, "No Clouds");
public static final CloudModel CUMULUS = new CloudModel(1, "Cumulus");
public static final CloudModel ALTOSTRATUS = new CloudModel(2,
"Altostratus");
public static final CloudModel CIRRUS = new CloudModel(18, "Cirrus");
public CloudModel(int value, String name) {
super(value, name);
}
}