summaryrefslogtreecommitdiff
path: root/java/lang/Class.java
diff options
context:
space:
mode:
authorJeroen Frijters <jeroen@sumatra.nl>2006-04-23 10:13:17 +0000
committerJeroen Frijters <jeroen@sumatra.nl>2006-04-23 10:13:17 +0000
commit2c65ecb9933d810fd553d84ce938e921e907b6e2 (patch)
tree8b6fe198ebf8a73403650c8ce93124b72577fcfa /java/lang/Class.java
parent7705dee3500ff4f9a1b41a817d2225abc295f3e9 (diff)
downloadclasspath-2c65ecb9933d810fd553d84ce938e921e907b6e2.tar.gz
2006-04-23 Jeroen Frijters <jeroen@frijters.net>
* java/lang/Class.java (getEnumConstants): Implemented without delegating to VMClass. * vm/reference/java/lang/VMClass.java (getEnumConstants): Removed.
Diffstat (limited to 'java/lang/Class.java')
-rw-r--r--java/lang/Class.java26
1 files changed, 25 insertions, 1 deletions
diff --git a/java/lang/Class.java b/java/lang/Class.java
index 2152accf3..c5ec1536d 100644
--- a/java/lang/Class.java
+++ b/java/lang/Class.java
@@ -1374,7 +1374,31 @@ public final class Class<T>
*/
public T[] getEnumConstants()
{
- return (T[])VMClass.getEnumConstants(this);
+ if (isEnum())
+ {
+ try
+ {
+ return (T[]) getMethod("values").invoke(null);
+ }
+ catch (NoSuchMethodException exception)
+ {
+ throw new Error("Enum lacks values() method");
+ }
+ catch (IllegalAccessException exception)
+ {
+ throw new Error("Unable to access Enum class");
+ }
+ catch (InvocationTargetException exception)
+ {
+ throw new
+ RuntimeException("The values method threw an exception",
+ exception);
+ }
+ }
+ else
+ {
+ return null;
+ }
}
/**