summaryrefslogtreecommitdiffstats
path: root/luni/src/main/java
diff options
context:
space:
mode:
authorJesse Wilson <jessewilson@google.com>2011-01-12 15:40:41 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-01-12 15:40:41 -0800
commit600f780e27510687d5935e0b62759f1bfdc1b8e8 (patch)
treef9143b76bac8694c312df1d6dd304d62b746bf13 /luni/src/main/java
parent9d219a8896ca9d07b42a5333347a77d350ce54a8 (diff)
parenta8b58362c8ee5aaca620854935a60b033b0733a1 (diff)
downloadlibcore-600f780e27510687d5935e0b62759f1bfdc1b8e8.zip
libcore-600f780e27510687d5935e0b62759f1bfdc1b8e8.tar.gz
libcore-600f780e27510687d5935e0b62759f1bfdc1b8e8.tar.bz2
am a8b58362: Merge "Fix bugs in toString() in reflection classes." into honeycomb
* commit 'a8b58362c8ee5aaca620854935a60b033b0733a1': Fix bugs in toString() in reflection classes.
Diffstat (limited to 'luni/src/main/java')
-rw-r--r--luni/src/main/java/java/lang/reflect/AccessibleObject.java24
-rw-r--r--luni/src/main/java/java/lang/reflect/Constructor.java2
-rw-r--r--luni/src/main/java/java/lang/reflect/Field.java3
-rw-r--r--luni/src/main/java/java/lang/reflect/Method.java4
-rw-r--r--luni/src/main/java/java/lang/reflect/WildcardType.java19
-rw-r--r--luni/src/main/java/org/apache/harmony/luni/lang/reflect/ImplForWildcard.java3
6 files changed, 22 insertions, 33 deletions
diff --git a/luni/src/main/java/java/lang/reflect/AccessibleObject.java b/luni/src/main/java/java/lang/reflect/AccessibleObject.java
index 83763a2..6803a46 100644
--- a/luni/src/main/java/java/lang/reflect/AccessibleObject.java
+++ b/luni/src/main/java/java/lang/reflect/AccessibleObject.java
@@ -245,10 +245,10 @@ public class AccessibleObject implements AnnotatedElement {
StringBuilder result = new StringBuilder();
if (types.length != 0) {
- result.append(types[0].getCanonicalName());
+ result.append(types[0].getName());
for (int i = 1; i < types.length; i++) {
result.append(',');
- result.append(types[i].getCanonicalName());
+ result.append(types[i].getName());
}
}
@@ -348,26 +348,6 @@ public class AccessibleObject implements AnnotatedElement {
*
* @throws NullPointerException if any of the arguments is null
*/
- void appendArrayType(StringBuilder sb, Class[] objs) {
- if (objs.length > 0) {
- appendArrayType(sb, objs[0]);
- for (int i = 1; i < objs.length; i++) {
- sb.append(',');
- appendArrayType(sb, objs[i]);
- }
- }
- }
-
- /**
- * Appends names of the specified array classes to the buffer. The array
- * elements may represent a simple type, a reference type or an array type.
- * Output format: java.lang.Object[], java.io.File, void
- *
- * @param sb buffer
- * @param objs array of classes to print the names
- *
- * @throws NullPointerException if any of the arguments is null
- */
void appendArrayGenericType(StringBuilder sb, Type[] objs) {
if (objs.length > 0) {
appendGenericType(sb, objs[0]);
diff --git a/luni/src/main/java/java/lang/reflect/Constructor.java b/luni/src/main/java/java/lang/reflect/Constructor.java
index f511687..2a29822 100644
--- a/luni/src/main/java/java/lang/reflect/Constructor.java
+++ b/luni/src/main/java/java/lang/reflect/Constructor.java
@@ -144,7 +144,7 @@ public final class Constructor<T> extends AccessibleObject implements GenericDec
for (int i = 0; i < formalTypeParameters.length; i++) {
appendGenericType(sb, formalTypeParameters[i]);
if (i < formalTypeParameters.length - 1) {
- sb.append(", ");
+ sb.append(",");
}
}
sb.append("> ");
diff --git a/luni/src/main/java/java/lang/reflect/Field.java b/luni/src/main/java/java/lang/reflect/Field.java
index d7898b9..1d2726c 100644
--- a/luni/src/main/java/java/lang/reflect/Field.java
+++ b/luni/src/main/java/java/lang/reflect/Field.java
@@ -32,7 +32,6 @@
package java.lang.reflect;
-import dalvik.system.VMStack;
import java.lang.annotation.Annotation;
import org.apache.harmony.kernel.vm.StringUtils;
import org.apache.harmony.luni.lang.reflect.GenericSignatureParser;
@@ -838,7 +837,7 @@ public final class Field extends AccessibleObject implements Member {
if (result.length() != 0) {
result.append(' ');
}
- result.append(type.getName());
+ appendArrayType(result, type);
result.append(' ');
result.append(declaringClass.getName());
result.append('.');
diff --git a/luni/src/main/java/java/lang/reflect/Method.java b/luni/src/main/java/java/lang/reflect/Method.java
index 68fe219..2e2c03f 100644
--- a/luni/src/main/java/java/lang/reflect/Method.java
+++ b/luni/src/main/java/java/lang/reflect/Method.java
@@ -175,7 +175,7 @@ public final class Method extends AccessibleObject implements GenericDeclaration
for (int i = 0; i < formalTypeParameters.length; i++) {
appendGenericType(sb, formalTypeParameters[i]);
if (i < formalTypeParameters.length - 1) {
- sb.append(", ");
+ sb.append(",");
}
}
sb.append("> ");
@@ -185,7 +185,7 @@ public final class Method extends AccessibleObject implements GenericDeclaration
sb.append(' ');
// append method name
appendArrayType(sb, getDeclaringClass());
- sb.append("."+getName());
+ sb.append(".").append(getName());
// append parameters
sb.append('(');
appendArrayGenericType(sb,
diff --git a/luni/src/main/java/java/lang/reflect/WildcardType.java b/luni/src/main/java/java/lang/reflect/WildcardType.java
index affd526..31e1023 100644
--- a/luni/src/main/java/java/lang/reflect/WildcardType.java
+++ b/luni/src/main/java/java/lang/reflect/WildcardType.java
@@ -18,12 +18,21 @@
package java.lang.reflect;
/**
- * This interface represents a wildcard type, such as the simple wildcard
- * {@code '?'}, the upper bounded wildcard {@code '? extends Closeable'}, the
- * multiple upper bounded wildcard {@code '? extends Closeable & Flushable'} or
- * the lower bounded wildcard {@code '? super OutputStream'}.
+ * A pattern type, such as the upper bounded wildcard {@code
+ * ? extends Closeable} or the lower bounded wildcard {@code ? super String}.
*
- * @since 1.5
+ * <p>Although this interface permits an arbitrary number of upper and lower
+ * bounds, all wildcard types of Java language programs are in one of two forms:
+ * <ol>
+ * <li><strong>No lower bound and one upper bound.</strong> Such types are
+ * written like {@code ? extends java.lang.Number}. When the upper bound is
+ * {@code java.lang.Object}, the {@code extends java.lang.Object} suffix is
+ * optional: {@code Set<?>} is shorthand for {@code
+ * Set<? extends java.lang.Object>}.
+ * <li><strong>One lower bound and an upper bound of {@code
+ * java.lang.Object}.</strong> Such types are written like {@code
+ * ? super java.lang.String}.
+ * </ol>
*/
public interface WildcardType extends Type {
/**
diff --git a/luni/src/main/java/org/apache/harmony/luni/lang/reflect/ImplForWildcard.java b/luni/src/main/java/org/apache/harmony/luni/lang/reflect/ImplForWildcard.java
index 3d60a0e..b0605f2 100644
--- a/luni/src/main/java/org/apache/harmony/luni/lang/reflect/ImplForWildcard.java
+++ b/luni/src/main/java/org/apache/harmony/luni/lang/reflect/ImplForWildcard.java
@@ -59,7 +59,8 @@ public final class ImplForWildcard implements WildcardType {
@Override
public String toString() {
StringBuilder sb = new StringBuilder("?");
- if (extendsBound.length() > 0) {
+ if ((extendsBound.length() == 1 && extendsBound.getResolvedTypes()[0] != Object.class)
+ || extendsBound.length() > 1) {
sb.append(" extends ").append(extendsBound);
} else if (superBound.length() > 0) {
sb.append(" super ").append(superBound);