--- old/src/java.base/share/classes/sun/reflect/annotation/AnnotatedTypeFactory.java 2016-07-15 09:57:18.497543172 -0700 +++ new/src/java.base/share/classes/sun/reflect/annotation/AnnotatedTypeFactory.java 2016-07-15 09:57:18.353471167 -0700 @@ -202,6 +202,14 @@ } + String inlineAnnotationsAsString() { + StringJoiner sj = new StringJoiner(" " ); + for (Annotation annotation : getDeclaredAnnotations() ) { + sj.add(annotation.toString()); + } + return sj.toString(); + } + // Implementation details final LocationInfo getLocation() { return location; @@ -244,6 +252,13 @@ } return ((GenericArrayType)t).getGenericComponentType(); } + + @Override + public String toString() { + // do the annotations go the right way round? + AnnotatedType at = getAnnotatedGenericComponentType(); + return inlineAnnotationsAsString + at.toString() + "[]" + } } private static final class AnnotatedTypeVariableImpl extends AnnotatedTypeBaseImpl implements AnnotatedTypeVariable { @@ -266,6 +281,13 @@ private TypeVariable getTypeVariable() { return (TypeVariable)getType(); } + + @Override + public String toString() { + // do the annotations go the right way round? + AnnotatedType at = getAnnotatedGenericComponentType(); + return inlineAnnotationsAsString + getType().getTypeName(); + } } private static final class AnnotatedParameterizedTypeImpl extends AnnotatedTypeBaseImpl --- old/src/java.base/share/classes/sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl.java 2016-07-15 09:57:18.913751187 -0700 +++ new/src/java.base/share/classes/sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl.java 2016-07-15 09:57:18.801695184 -0700 @@ -65,13 +65,8 @@ } public String toString() { - Type componentType = getGenericComponentType(); StringBuilder sb = new StringBuilder(); - - if (componentType instanceof Class) - sb.append(((Class)componentType).getName() ); - else - sb.append(componentType.toString()); + sb.append(getGenericComponentType().getTypeName()); sb.append("[]"); return sb.toString(); } --- old/src/java.base/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java 2016-07-15 09:57:19.269929200 -0700 +++ new/src/java.base/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java 2016-07-15 09:57:19.153871196 -0700 @@ -33,6 +33,7 @@ import java.lang.reflect.Type; import java.lang.reflect.TypeVariable; import java.util.Arrays; +import java.util.StringJoiner; import java.util.Objects; /** Implementing class for ParameterizedType interface. */ @@ -207,10 +208,7 @@ StringBuilder sb = new StringBuilder(); if (ownerType != null) { - if (ownerType instanceof Class) - sb.append(((Class)ownerType).getName()); - else - sb.append(ownerType.toString()); + sb.append(ownerType.getTypeName()); sb.append("."); @@ -224,17 +222,13 @@ } else sb.append(rawType.getName()); - if (actualTypeArguments != null && - actualTypeArguments.length > 0) { - sb.append("<"); - boolean first = true; + if (actualTypeArguments != null) { + StringJoiner sj = new StringJoiner(", ", "<", ">"); + sj.setEmptyValue(""); for(Type t: actualTypeArguments) { - if (!first) - sb.append(", "); - sb.append(t.getTypeName()); - first = false; + sj.add(t.getTypeName()); } - sb.append(">"); + sb.append(sj.toString()); } return sb.toString(); --- old/src/java.base/share/classes/sun/reflect/generics/reflectiveObjects/WildcardTypeImpl.java 2016-07-15 09:57:19.626107212 -0700 +++ new/src/java.base/share/classes/sun/reflect/generics/reflectiveObjects/WildcardTypeImpl.java 2016-07-15 09:57:19.510049208 -0700 @@ -32,6 +32,7 @@ import sun.reflect.generics.tree.FieldTypeSignature; import sun.reflect.generics.visitor.Reifier; import java.util.Arrays; +import java.util.StringJoiner; /** @@ -156,14 +157,13 @@ assert bounds.length > 0; - boolean first = true; - for(Type bound: bounds) { - if (!first) - sb.append(" & "); - first = false; - sb.append(bound.getTypeName()); + StringJoiner sj = new StringJoiner(" & "); + for(Type bound: bounds) { + sj.add(bound.getTypeName()); } + sb.append(sj.toString()); + return sb.toString(); }