diff --git a/spring-core/src/main/java/org/springframework/util/TypeUtils.java b/spring-core/src/main/java/org/springframework/util/TypeUtils.java index 6f0964d7b1a9..70e2e5a857cd 100644 --- a/spring-core/src/main/java/org/springframework/util/TypeUtils.java +++ b/spring-core/src/main/java/org/springframework/util/TypeUtils.java @@ -36,6 +36,10 @@ */ public abstract class TypeUtils { + private static final Type[] IMPLICIT_LOWER_BOUNDS = { null }; + + private static final Type[] IMPLICIT_UPPER_BOUNDS = { Object.class }; + /** * Check if the right-hand side type may be assigned to the left-hand side * type following the Java generics rules. @@ -196,20 +200,14 @@ private static Type[] getLowerBounds(WildcardType wildcardType) { Type[] lowerBounds = wildcardType.getLowerBounds(); // supply the implicit lower bound if none are specified - if (lowerBounds.length == 0) { - lowerBounds = new Type[] { null }; - } - return lowerBounds; + return (lowerBounds.length == 0 ? IMPLICIT_LOWER_BOUNDS : lowerBounds); } private static Type[] getUpperBounds(WildcardType wildcardType) { Type[] upperBounds = wildcardType.getUpperBounds(); // supply the implicit upper bound if none are specified - if (upperBounds.length == 0) { - upperBounds = new Type[] { Object.class }; - } - return upperBounds; + return (upperBounds.length == 0 ? IMPLICIT_UPPER_BOUNDS : upperBounds); } public static boolean isAssignableBound(@Nullable Type lhsType, @Nullable Type rhsType) {