Browse Source

MethodParameter.equals properly checks overridden containing class

Closes gh-23352
pull/23837/head
Juergen Hoeller 5 years ago
parent
commit
aebc485eda
  1. 9
      spring-core/src/main/java/org/springframework/core/MethodParameter.java

9
spring-core/src/main/java/org/springframework/core/MethodParameter.java

@ -76,6 +76,7 @@ public class MethodParameter {
@Nullable @Nullable
Map<Integer, Integer> typeIndexesPerLevel; Map<Integer, Integer> typeIndexesPerLevel;
/** The containing class. Could also be supplied by overriding {@link #getContainingClass()} */
@Nullable @Nullable
private volatile Class<?> containingClass; private volatile Class<?> containingClass;
@ -383,6 +384,12 @@ public class MethodParameter {
this.containingClass = containingClass; this.containingClass = containingClass;
} }
/**
* Return the containing class for this method parameter.
* @return a specific containing class (potentially a subclass of the
* declaring class), or otherwise simply the declaring class itself
* @see #getDeclaringClass()
*/
public Class<?> getContainingClass() { public Class<?> getContainingClass() {
Class<?> containingClass = this.containingClass; Class<?> containingClass = this.containingClass;
return (containingClass != null ? containingClass : getDeclaringClass()); return (containingClass != null ? containingClass : getDeclaringClass());
@ -660,7 +667,7 @@ public class MethodParameter {
return false; return false;
} }
MethodParameter otherParam = (MethodParameter) other; MethodParameter otherParam = (MethodParameter) other;
return (this.containingClass == otherParam.containingClass && return (getContainingClass() == otherParam.getContainingClass() &&
ObjectUtils.nullSafeEquals(this.typeIndexesPerLevel, otherParam.typeIndexesPerLevel) && ObjectUtils.nullSafeEquals(this.typeIndexesPerLevel, otherParam.typeIndexesPerLevel) &&
this.nestingLevel == otherParam.nestingLevel && this.nestingLevel == otherParam.nestingLevel &&
this.parameterIndex == otherParam.parameterIndex && this.parameterIndex == otherParam.parameterIndex &&

Loading…
Cancel
Save