When I try to use enum to store: “=”, “>”, “<“, etc, I have:
public static enum DataValueModifier {
EQUAL("="),
GREATER_THAN(">"),
GREATER_EUQAL(">="),
LESS_THAN("<"),
LESS_EQUAL("<="),
APPRROXIMATE("~"),
NOT_DETERMINED("ND");
private String value;
private DataValueModifier(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
How do I use it when I try to compare a string to see if it contains a “=” sign, should I do:
if (dataValue.contains(DataValueModifier.EQUAL.getValue())) {
...
}
I understand using enum is the better practice here, but this just looks silly…
Thanks,
David
First of all, I’d move the “contains” method (or the equivalent of it) to the enum itself by defining an isModifier method.
Then, your code looks like this instead:
But, more importantly, why are you using dataValue instead of the enum in the first place? If you are getting command line input or something or parsing a string equation and then need to figure out the expression I guess I understand. But if you have control of the code then you should just start with the enum and you’ll be able to say
I’d also consider adding a static method to the enum that converts a given string to the correct enum value. It’s not quite as efficient, perhaps, but unless you really care about efficiency it will make your code much cleaner. So add this method to your enum:
The
isModifierand thetoDataValueModifiermethods might add a bit of ugly code to your DataValueModifier enum, but all your other code will look great. You can now do something like this:or even