From 23d0240dc724ddeacba5b5e84ce5c5f08e5d3dc3 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Tue, 22 Mar 2022 16:18:14 +0100 Subject: [PATCH] Introduce ClassUtils.isStaticClass() utility method The impetus for this is to be able to use ClassUtils::isStaticClass or the existing ClassUtils::isInnerClass as a method reference for class-based predicates that need to differentiate between static nested types and inner classes. See gh-28207 --- .../java/org/springframework/util/ClassUtils.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-core/src/main/java/org/springframework/util/ClassUtils.java b/spring-core/src/main/java/org/springframework/util/ClassUtils.java index 5c70a4a92c6..de70062fbe3 100644 --- a/spring-core/src/main/java/org/springframework/util/ClassUtils.java +++ b/spring-core/src/main/java/org/springframework/util/ClassUtils.java @@ -831,15 +831,27 @@ public abstract class ClassUtils { return javaLanguageInterfaces.contains(ifc); } + /** + * Determine if the supplied class is a static class. + * @return {@code true} if the supplied class is a static class + * @since 6.0 + * @see Modifier#isStatic(int) + * @see #isInnerClass(Class) + */ + public static boolean isStaticClass(Class clazz) { + return Modifier.isStatic(clazz.getModifiers()); + } + /** * Determine if the supplied class is an inner class, * i.e. a non-static member of an enclosing class. * @return {@code true} if the supplied class is an inner class * @since 5.0.5 * @see Class#isMemberClass() + * @see #isStaticClass(Class) */ public static boolean isInnerClass(Class clazz) { - return (clazz.isMemberClass() && !Modifier.isStatic(clazz.getModifiers())); + return (clazz.isMemberClass() && !isStaticClass(clazz)); } /**