diff options
author | Tom Tromey <tromey@redhat.com> | 2006-03-28 18:51:01 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2006-03-28 18:51:01 +0000 |
commit | d9d677465f05403d17ad7de6eeb1ed796e548941 (patch) | |
tree | c1c2650d158f9b8fad76c541a7b09041d4cf2fcc | |
parent | c10ac06665d6b636f021828d31101ffe6f9df31a (diff) | |
download | classpath-d9d677465f05403d17ad7de6eeb1ed796e548941.tar.gz |
PR classpath/25189:
* java/lang/Enum.java (valueOf): Ensure that the named field
is an enum constant.
(compareTo): Check class of enum.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | java/lang/Enum.java | 8 |
2 files changed, 14 insertions, 1 deletions
@@ -1,5 +1,12 @@ 2006-03-27 Tom Tromey <tromey@redhat.com> + PR classpath/25189: + * java/lang/Enum.java (valueOf): Ensure that the named field + is an enum constant. + (compareTo): Check class of enum. + +2006-03-27 Tom Tromey <tromey@redhat.com> + * java/lang/reflect/ParameterizedType.java: Javadoc fix. 2006-03-27 Tom Tromey <tromey@redhat.com> diff --git a/java/lang/Enum.java b/java/lang/Enum.java index f115090d3..c4160ebaa 100644 --- a/java/lang/Enum.java +++ b/java/lang/Enum.java @@ -38,6 +38,7 @@ exception statement from your version. */ package java.lang; import java.io.Serializable; +import java.lang.reflect.Field; /** * @since 1.5 @@ -76,7 +77,10 @@ public abstract class Enum<T extends Enum<T>> try { - return (S) etype.getDeclaredField(s).get(null); + Field f = etype.getDeclaredField(s); + if (! f.isEnumConstant()) + throw new IllegalArgumentException(s); + return (S) f.get(null); } catch (NoSuchFieldException exception) { @@ -106,6 +110,8 @@ public abstract class Enum<T extends Enum<T>> public final int compareTo(T e) { + if (getDeclaringClass() != e.getDeclaringClass()) + throw new ClassCastException(); return ordinal - e.ordinal; } |