Re: Using enums to avoid using switch/if
aks_java wrote:
public enum Operation {
PLUS {
Please consider using narrower indentation, four spaces per level or less.
double eval(double x, double y) {
return x + y;
}
},
MINUS {
double eval(double x, double y) {
return x - y;
}
},
TIMES {
double eval(double x, double y) {
return x * y;
}
},
DIVIDE {
double eval(double x, double y) {
return x / y;
}
};
abstract double eval(double x, double y);
}
But here's my problem: In my program I've strings ("+" , "-", "/", "="
etc) instead of enums. I need a mechanism to map string to enum.
public enum Operation
{
PLUS( "+" )
{
double eval(double x, double y)
{
return x + y;
}
},
MINUS( "-" )
{
double eval(double x, double y)
{
return x - y;
}
},
TIMES( "*" )
{
double eval(double x, double y)
{
return x * y;
}
},
DIVIDE( "/" )
{
double eval(double x, double y)
{
return x / y;
}
};
private final String sym;
Operation( String sym )
{
this.sym = sym;
}
abstract double eval(double x, double y);
@Override public String toString()
{
return this.sym;
}
public static Operation fromString( String nym )
{
if ( nym == null )
{
return null;
}
for ( Operation op : Operation.values() )
{
if ( nym.equals( op.sym ))
{
return op;
}
}
return null;
}
}
--
Lew