Prefer most abstract method in getPubliclyAccessibleMethodIfPossible

Closes gh-35189
This commit is contained in:
Juergen Hoeller
2025-07-11 22:42:36 +02:00
parent c754bfe7e6
commit ba6166a02d
2 changed files with 26 additions and 24 deletions
@@ -687,13 +687,13 @@ class ClassUtilsTests {
}
@Test
void publicMethodInPublicClass() throws Exception {
void publicMethodInObjectClass() throws Exception {
Class<?> originalType = String.class;
Method originalMethod = originalType.getDeclaredMethod("toString");
Method originalMethod = originalType.getDeclaredMethod("hashCode");
Method publiclyAccessibleMethod = ClassUtils.getPubliclyAccessibleMethodIfPossible(originalMethod, null);
assertThat(publiclyAccessibleMethod.getDeclaringClass()).isEqualTo(originalType);
assertThat(publiclyAccessibleMethod).isSameAs(originalMethod);
assertThat(publiclyAccessibleMethod.getDeclaringClass()).isEqualTo(Object.class);
assertThat(publiclyAccessibleMethod.getName()).isEqualTo("hashCode");
assertPubliclyAccessible(publiclyAccessibleMethod);
}
@@ -703,9 +703,9 @@ class ClassUtilsTests {
Method originalMethod = originalType.getDeclaredMethod("size");
Method publiclyAccessibleMethod = ClassUtils.getPubliclyAccessibleMethodIfPossible(originalMethod, null);
// Should not find the interface method in List.
assertThat(publiclyAccessibleMethod.getDeclaringClass()).isEqualTo(originalType);
assertThat(publiclyAccessibleMethod).isSameAs(originalMethod);
// Should find the interface method in List.
assertThat(publiclyAccessibleMethod.getDeclaringClass()).isEqualTo(List.class);
assertThat(publiclyAccessibleMethod.getName()).isEqualTo("size");
assertPubliclyAccessible(publiclyAccessibleMethod);
}