Re: Simple question about Java Methods
Danger_Duck wrote:
So like if I do:
switch (Wavetype.valueOf(s))
but the current value of s is not included in the wavetype, it throws
an exception rather than go to default. How do I handle such cases
with enums? That is, why does it not simply go to "default:" and skip
over the cases? Can Wavetype.valueof(s) not return null and the null
case go to default in the switch?
Thanks
That's the way it works. This is from the JLS, btw, not the Java doc:
/**
* Returns the enum constant of this type with the specified
* name.
* The string must match exactly an identifier used to declare
* an enum constant in this type. (Extraneous whitespace
* characters are not permitted.)
*
* @return the enum constant with the specified name
* @throws IllegalArgumentException if this enum type has no
* constant with the specified name
*/
public static E valueOf(String name);
So it throws an exception because it's defined to. You can't switch on
null either. So....
try {
w = valueOf(s);
} catch( IllegalArgumentException e ) {
w = NONE;
}
Where NONE would be a value you'd have to add to the enum:
public enum Waves {NONE, Sine, Square, Sawtooth }
Now you can switch safely.