summaryrefslogtreecommitdiff
path: root/java/lang/Enum.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/lang/Enum.java')
-rw-r--r--java/lang/Enum.java8
1 files changed, 7 insertions, 1 deletions
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;
}