Change Class::component_type_ and implement reflect.Array

Change-Id: I9e06f31577551c738eca2621146c8d2328119442
diff --git a/src/java_lang_Class.cc b/src/java_lang_Class.cc
index 0c6bbe5..3e80c6b 100644
--- a/src/java_lang_Class.cc
+++ b/src/java_lang_Class.cc
@@ -35,24 +35,7 @@
 }
 
 jclass Class_getComponentType(JNIEnv* env, jobject javaThis) {
-  Class* c = Decode<Class*>(env, javaThis);
-  if (!c->IsArrayClass()) {
-      return NULL;
-  }
-
-  /*
-   * We can't just return c->GetComponentType(), because that gives
-   * us the base type (e.g. X[][][] returns X).  If this is a multi-
-   * dimensional array, we have to do the lookup by name.
-   */
-  Class* result;
-  std::string descriptor(c->GetDescriptor()->ToModifiedUtf8());
-  if (descriptor[1] == '[') {
-    result = Runtime::Current()->GetClassLinker()->FindClass(descriptor.c_str() + 1, c->GetClassLoader());
-  } else {
-    result = c->GetComponentType();
-  }
-  return AddLocalReference<jclass>(env, result);
+  return AddLocalReference<jclass>(env, Decode<Class*>(env, javaThis)->GetComponentType());
 }
 
 jobjectArray Class_getDeclaredClasses(JNIEnv* env, jclass java_lang_Class_class, jclass c, jboolean publicOnly) {