diff options
author | Jesse Wilson <jessewilson@google.com> | 2011-01-12 15:40:41 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-01-12 15:40:41 -0800 |
commit | 600f780e27510687d5935e0b62759f1bfdc1b8e8 (patch) | |
tree | f9143b76bac8694c312df1d6dd304d62b746bf13 /luni/src/main/java | |
parent | 9d219a8896ca9d07b42a5333347a77d350ce54a8 (diff) | |
parent | a8b58362c8ee5aaca620854935a60b033b0733a1 (diff) | |
download | libcore-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')
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); |