jdk/src/share/classes/java/lang/Class.java
changeset 25517 f3c83ab83a16
parent 25392 0eabdbb887aa
child 25979 42e5d9f8087e
--- a/jdk/src/share/classes/java/lang/Class.java	Fri Jun 27 14:21:31 2014 -0700
+++ b/jdk/src/share/classes/java/lang/Class.java	Wed Jul 02 16:47:49 2014 -0400
@@ -134,10 +134,11 @@
      * This constructor is not used and prevents the default constructor being
      * generated.
      */
-    private Class(ClassLoader loader) {
+    private Class(ClassLoader loader, Class<?> arrayComponentType) {
         // Initialize final field for classLoader.  The initialization value of non-null
         // prevents future JIT optimizations from assuming this final field is null.
         classLoader = loader;
+        componentType = arrayComponentType;
     }
 
     /**
@@ -917,7 +918,16 @@
      * @see     java.lang.reflect.Array
      * @since 1.1
      */
-    public native Class<?> getComponentType();
+    public Class<?> getComponentType() {
+        // Only return for array types. Storage may be reused for Class for instance types.
+        if (isArray()) {
+            return componentType;
+        } else {
+            return null;
+        }
+    }
+
+    private final Class<?> componentType;
 
 
     /**