Add Class#isEnum and improve error handling in Enum.valueOf

This commit is contained in:
Simon Ochsenreither
2013-02-03 15:39:31 +01:00
parent b1eb4b9718
commit 1db67e463f
2 changed files with 13 additions and 5 deletions

View File

@ -30,7 +30,9 @@ public abstract class Enum<E extends Enum<E>> implements Comparable<E> {
}
public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) {
if (name == null) throw new NullPointerException();
if (name == null) throw new NullPointerException("name");
if (!enumType.isEnum())
throw new IllegalArgumentException(enumType.getCanonicalName() + " is not an enum.");
try {
Method method = enumType.getMethod("values");
@ -41,10 +43,11 @@ public abstract class Enum<E extends Enum<E>> implements Comparable<E> {
}
}
} catch (Exception ex) {
throw new RuntimeException(ex);
// Cannot happen
throw new Error(ex);
}
throw new IllegalArgumentException(name);
throw new IllegalArgumentException(enumType.getCanonicalName() + "." + name + " is not an enum constant.");
}
public int ordinal() {