Merge branch '6.0.x'

This commit is contained in:
Stephane Nicoll 2023-05-05 15:04:15 +02:00
commit f2c0b30641
1 changed files with 6 additions and 8 deletions

View File

@ -36,6 +36,10 @@ import org.springframework.lang.Nullable;
*/ */
public abstract class TypeUtils { 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 * Check if the right-hand side type may be assigned to the left-hand side
* type following the Java generics rules. * type following the Java generics rules.
@ -196,20 +200,14 @@ public abstract class TypeUtils {
Type[] lowerBounds = wildcardType.getLowerBounds(); Type[] lowerBounds = wildcardType.getLowerBounds();
// supply the implicit lower bound if none are specified // supply the implicit lower bound if none are specified
if (lowerBounds.length == 0) { return (lowerBounds.length == 0 ? IMPLICIT_LOWER_BOUNDS : lowerBounds);
lowerBounds = new Type[] { null };
}
return lowerBounds;
} }
private static Type[] getUpperBounds(WildcardType wildcardType) { private static Type[] getUpperBounds(WildcardType wildcardType) {
Type[] upperBounds = wildcardType.getUpperBounds(); Type[] upperBounds = wildcardType.getUpperBounds();
// supply the implicit upper bound if none are specified // supply the implicit upper bound if none are specified
if (upperBounds.length == 0) { return (upperBounds.length == 0 ? IMPLICIT_UPPER_BOUNDS : upperBounds);
upperBounds = new Type[] { Object.class };
}
return upperBounds;
} }
public static boolean isAssignableBound(@Nullable Type lhsType, @Nullable Type rhsType) { public static boolean isAssignableBound(@Nullable Type lhsType, @Nullable Type rhsType) {