public class MethodMatcherUtil extends Object
Constructor and Description |
---|
MethodMatcherUtil() |
Modifier and Type | Method and Description |
---|---|
static Predicate<Method> |
allMatch(Predicate<Method>... matchers)
用于组合多个方法匹配器的方法匹配器,当所有方法匹配器均匹配成功时才认为方法匹配。
|
static Predicate<Method> |
anyMatch(Predicate<Method>... matchers)
用于组合多个方法匹配器的方法匹配器,当任意方法匹配器匹配成功时即认为方法匹配。
|
static Predicate<Method> |
forGetterMethod(Field field)
用于获得指定属性的getter方法的匹配器
查找方法名为
get + 首字母大写的属性名 的无参数方法;
查找方法名为属性名的无参数方法;
若fieldType 为boolean 或Boolean ,则同时查找方法名为is + 首字母大写的属性 的无参数方法;
|
static Predicate<Method> |
forGetterMethod(String fieldName,
Class<?> fieldType)
用于获得指定属性的getter方法的匹配器
查找方法名为
get + 首字母大写的属性名 的无参数方法;
查找方法名为属性名的无参数方法;
若fieldType 为boolean 或Boolean ,则同时查找方法名为is + 首字母大写的属性 的无参数方法;
|
static Predicate<Method> |
forMethodSignature(Method method)
用于匹配方法签名的方法匹配器,检查的内容包括:
方法名是否完全一致;
返回值类型是否匹配,允许返回值类型为方法返回值类型的子类;
参数类型是否匹配,允许参数类型为方法参数类型的子类;
|
static Predicate<Method> |
forMethodSignature(String methodName,
Class<?> returnType,
Class<?>... parameterTypes)
用于匹配方法签名的方法匹配器,检查的内容包括:
方法名是否完全一致;
返回值类型是否匹配,允许返回值类型为方法返回值类型的子类,若返回值类型为
null 则表示匹配无返回值的方法;
参数类型是否匹配,允许参数类型为方法参数类型的子类,若参数类型为null 则表示匹配无参数的方法;
|
static Predicate<Method> |
forModifiers(int... modifiers)
用于具有指定修饰符的方法的方法匹配器。
|
static Predicate<Method> |
forMostSpecificParameterTypes(Class<?>... parameterTypes)
用于匹配指定参数类型的方法的方法匹配器,与
forParameterTypes(java.lang.Class<?>...) 不同的是,该方法仅用于尽量可能最匹配的方法
若参数为空,则表示匹配无参数方法;
若参数不为空:
仅匹配parameterTypes 中不为null 的参数类型,若参数类型为null 则表示匹配任意类型的参数;
若N为parameterTypes 长度,则仅要求parameterTypes 不为null 的类型与方法前N个参数类型匹配即可;
若parameterTypes 长度大于参数列表长度,则直接返回false ;
比如:若存在三参数方法 method(String, Integer, Object) ,支持以下匹配:
forMostSpecificParameterTypes(CharSequence.class, Number.class, Object.class)
forMostSpecificParameterTypes(String.class, Integer.class, Object.class)
forMostSpecificParameterTypes(String.class, Integer.class, null)
forMostSpecificParameterTypes(String.class, null, null)
forMostSpecificParameterTypes(null, null, null)
forMostSpecificParameterTypes(String.class, Integer.class)
forMostSpecificParameterTypes(String.class)
|
static Predicate<Method> |
forMostSpecificStrictParameterTypes(Class<?>... parameterTypes)
用于匹配指定参数类型的方法的方法匹配器,与
forParameterTypes(java.lang.Class<?>...) 不同的是,该方法仅用于尽量可能最匹配的方法
若参数为空,则表示匹配无参数方法;
若参数不为空:
仅匹配parameterTypes 中不为null 的参数类型,若参数类型为null 则表示匹配任意类型的参数;
若N为parameterTypes 长度,则仅要求parameterTypes 不为null 的类型与方法前N个参数类型匹配即可;
若parameterTypes 长度大于参数列表长度,则直接返回false ;
比如:若存在三参数方法 method(String, Integer, Object) ,支持以下匹配:
forMostSpecificParameterTypes(String.class, Integer.class, Object.class)
forMostSpecificParameterTypes(String.class, Integer.class, null)
forMostSpecificParameterTypes(String.class, null, null)
forMostSpecificParameterTypes(null, null, null)
forMostSpecificParameterTypes(String.class, Integer.class)
forMostSpecificParameterTypes(String.class)
|
static Predicate<Method> |
forName(String methodName)
用于根据方法名匹配方法的方法匹配器。
|
static Predicate<Method> |
forNameAndParameterTypes(String methodName,
Class<?>... parameterTypes)
用于同时匹配方法名和参数类型的方法匹配器,其中,参数类型匹配时允许参数类型为方法参数类型的子类。
|
static Predicate<Method> |
forNameAndStrictParameterTypes(String methodName,
Class<?>... parameterTypes)
用于同时匹配方法名和参数类型的方法匹配器,其中,参数类型匹配时要求参数类型与方法参数类型完全一致。
|
static Predicate<Method> |
forNameIgnoreCase(String methodName)
用于根据方法名匹配方法的方法匹配器,忽略方法名大小写。
|
static Predicate<Method> |
forNameIgnoreCaseAndParameterTypes(String methodName,
Class<?>... parameterTypes)
用于同时匹配方法名和参数类型的方法匹配器,其中,参数类型匹配时允许参数类型为方法参数类型的子类,且方法名忽略大小写。
|
static Predicate<Method> |
forNameIgnoreCaseAndStrictParameterTypes(String methodName,
Class<?>... parameterTypes)
用于同时匹配方法名和参数类型的方法匹配器,其中,参数类型匹配时要求参数类型与方法参数类型完全一致,且方法名忽略大小写。
|
static Predicate<Method> |
forNoneParameter()
用于匹配无参数方法的方法匹配器。
|
static Predicate<Method> |
forNoneReturnType()
用于匹配无返回值的方法的方法匹配器。
|
static Predicate<Method> |
forParameterCount(int count)
用于匹配指定参数个数的方法的方法匹配器。
|
static Predicate<Method> |
forParameterTypes(Class<?>... parameterTypes)
用于匹配指定参数类型的方法的方法匹配器,只要参数类型可以赋值给方法参数类型即认为匹配成功。
|
static Predicate<Method> |
forReturnType(Class<?> returnType)
用于匹配指定参数类型的方法的方法匹配器,只要参数类型可以赋值给方法参数类型。
|
static Predicate<Method> |
forSetterMethod(Field field)
用于获得指定属性的setter方法的匹配器,默认查找方法名为
set + 首字母大写的属性 的单参数方法。 |
static Predicate<Method> |
forSetterMethod(String fieldName,
Class<?> fieldType)
用于获得指定属性的setter方法的匹配器,默认查找方法名为
set + 首字母大写的属性 的单参数方法。 |
static Predicate<Method> |
forStrictMethodSignature(Method method)
用于匹配方法签名的方法匹配器,检查的内容包括:
方法名是否完全一致;
返回值类型是否匹配,要求返回值类型与方法返回值类型完全一致;
参数类型是否匹配,要求参数类型与方法参数类型完全一致;
|
static Predicate<Method> |
forStrictMethodSignature(String methodName,
Class<?> returnType,
Class<?>... parameterTypes)
用于匹配方法签名的方法匹配器,检查的内容包括:
方法名是否完全一致;
返回值类型是否匹配,要求返回值类型与方法返回值类型完全一致,若返回值类型为
null 则表示匹配无返回值的方法;
参数类型是否匹配,要求参数类型与方法参数类型完全一致,若参数类型为null 则表示匹配无参数的方法;
|
static Predicate<Method> |
forStrictParameterTypes(Class<?>... parameterTypes)
用于匹配指定参数类型的方法的方法匹配器,只有参数类型完全匹配才认为匹配成功。
|
static Predicate<Method> |
forStrictReturnType(Class<?> returnType)
用于匹配指定返回值类型的方法的方法匹配器,要求返回值类型与指定类型完全一致。
|
static Predicate<Method> |
hasAnnotation(Class<? extends Annotation> annotationType)
用于匹配被指定注解标注、或注解层级结构中存在指定注解的方法的方法匹配器。
|
static Predicate<Method> |
hasAnnotationOnDeclaringClass(Class<? extends Annotation> annotationType)
用于匹配声明方法的类的层级接口中,存在任意类被指定注解标注、或注解层级结构中存在指定注解的方法的方法匹配器。
|
static Predicate<Method> |
hasAnnotationOnMethodOrDeclaringClass(Class<? extends Annotation> annotationType)
用于匹配方法本身或声明方法的类上,直接被指定注解标注、或注解层级结构中存在指定注解的方法的方法匹配器。
|
static Predicate<Method> |
hasDeclaredAnnotation(Class<? extends Annotation> annotationType)
用于匹配被指定注解标注、或注解层级结构中存在指定注解的方法的方法匹配器。
|
static Predicate<Method> |
isPublic()
用于匹配共有方法的方法匹配器。
|
static Predicate<Method> |
isPublicStatic()
用于匹配公共静态方法的方法匹配器。
|
static Predicate<Method> |
isStatic()
用于匹配静态方法的方法匹配器。
|
static Predicate<Method> |
noneMatch(Predicate<Method>... matchers)
用于组合多个方法匹配器的方法匹配器,仅当所有方法匹配器均匹配失败时才认为方法匹配。
|
@SafeVarargs public static Predicate<Method> noneMatch(Predicate<Method>... matchers)
用于组合多个方法匹配器的方法匹配器,仅当所有方法匹配器均匹配失败时才认为方法匹配。
matchers
- 方法匹配器Stream.noneMatch(java.util.function.Predicate<? super T>)
@SafeVarargs public static Predicate<Method> anyMatch(Predicate<Method>... matchers)
用于组合多个方法匹配器的方法匹配器,当任意方法匹配器匹配成功时即认为方法匹配。
matchers
- 方法匹配器Stream.anyMatch(java.util.function.Predicate<? super T>)
@SafeVarargs public static Predicate<Method> allMatch(Predicate<Method>... matchers)
用于组合多个方法匹配器的方法匹配器,当所有方法匹配器均匹配成功时才认为方法匹配。
matchers
- 方法匹配器Stream.allMatch(java.util.function.Predicate<? super T>)
public static Predicate<Method> forModifiers(int... modifiers)
用于具有指定修饰符的方法的方法匹配器。
modifiers
- 修饰符public static Predicate<Method> hasDeclaredAnnotation(Class<? extends Annotation> annotationType)
用于匹配被指定注解标注、或注解层级结构中存在指定注解的方法的方法匹配器。
比如:指定注解为 @Annotation
,则匹配直接被@Annotation
标注的方法。
annotationType
- 注解类型AnnotatedElementUtil.isAnnotationPresent(java.lang.reflect.AnnotatedElement, java.lang.Class<? extends java.lang.annotation.Annotation>)
public static Predicate<Method> hasAnnotation(Class<? extends Annotation> annotationType)
用于匹配被指定注解标注、或注解层级结构中存在指定注解的方法的方法匹配器。
比如:指定注解为 @Annotation
,则匹配:
@Annotation
标注的方法;@Annotation
注解的派生注解标注的方法;annotationType
- 注解类型AnnotatedElementUtil.isAnnotationPresent(java.lang.reflect.AnnotatedElement, java.lang.Class<? extends java.lang.annotation.Annotation>)
public static Predicate<Method> hasAnnotationOnDeclaringClass(Class<? extends Annotation> annotationType)
用于匹配声明方法的类的层级接口中,存在任意类被指定注解标注、或注解层级结构中存在指定注解的方法的方法匹配器。
比如:指定注解为 @Annotation
,则匹配:
@Annotation
标注的方法;@Annotation
注解的派生注解标注的方法;annotationType
- 注解类型AnnotatedElementUtil.isAnnotationPresent(java.lang.reflect.AnnotatedElement, java.lang.Class<? extends java.lang.annotation.Annotation>)
public static Predicate<Method> hasAnnotationOnMethodOrDeclaringClass(Class<? extends Annotation> annotationType)
用于匹配方法本身或声明方法的类上,直接被指定注解标注、或注解层级结构中存在指定注解的方法的方法匹配器。
比如:指定注解为 @Annotation
,则匹配:
@Annotation
标注的方法;@Annotation
注解的派生注解标注的方法;@Annotation
标注的方法;@Annotation
注解的派生注解标注的方法;annotationType
- 注解类型public static Predicate<Method> forGetterMethod(String fieldName, Class<?> fieldType)
用于获得指定属性的getter方法的匹配器
get + 首字母大写的属性名
的无参数方法;fieldType
为boolean
或Boolean
,则同时查找方法名为is + 首字母大写的属性
的无参数方法;fieldName
- 属性名fieldType
- 属性类型public static Predicate<Method> forGetterMethod(Field field)
用于获得指定属性的getter方法的匹配器
get + 首字母大写的属性名
的无参数方法;fieldType
为boolean
或Boolean
,则同时查找方法名为is + 首字母大写的属性
的无参数方法;field
- 属性public static Predicate<Method> forSetterMethod(String fieldName, Class<?> fieldType)
用于获得指定属性的setter方法的匹配器,默认查找方法名为set + 首字母大写的属性
的单参数方法。
set + 首字母大写的属性名
的单参数方法;fieldName
- 属性名fieldType
- 属性类型public static Predicate<Method> forSetterMethod(Field field)
用于获得指定属性的setter方法的匹配器,默认查找方法名为set + 首字母大写的属性
的单参数方法。
set + 首字母大写的属性名
的单参数方法;field
- 属性public static Predicate<Method> forNameAndParameterTypes(String methodName, Class<?>... parameterTypes)
用于同时匹配方法名和参数类型的方法匹配器,其中,参数类型匹配时允许参数类型为方法参数类型的子类。
methodName
- 方法名parameterTypes
- 参数类型public static Predicate<Method> forNameAndStrictParameterTypes(String methodName, Class<?>... parameterTypes)
用于同时匹配方法名和参数类型的方法匹配器,其中,参数类型匹配时要求参数类型与方法参数类型完全一致。
methodName
- 方法名parameterTypes
- 参数类型public static Predicate<Method> forNameIgnoreCaseAndParameterTypes(String methodName, Class<?>... parameterTypes)
用于同时匹配方法名和参数类型的方法匹配器,其中,参数类型匹配时允许参数类型为方法参数类型的子类,且方法名忽略大小写。
methodName
- 方法名parameterTypes
- 参数类型public static Predicate<Method> forNameIgnoreCaseAndStrictParameterTypes(String methodName, Class<?>... parameterTypes)
用于同时匹配方法名和参数类型的方法匹配器,其中,参数类型匹配时要求参数类型与方法参数类型完全一致,且方法名忽略大小写。
methodName
- 方法名parameterTypes
- 参数类型public static Predicate<Method> forMethodSignature(Method method)
用于匹配方法签名的方法匹配器,检查的内容包括:
method
- 方法public static Predicate<Method> forMethodSignature(String methodName, Class<?> returnType, Class<?>... parameterTypes)
用于匹配方法签名的方法匹配器,检查的内容包括:
null
则表示匹配无返回值的方法;null
则表示匹配无参数的方法;methodName
- 方法名returnType
- 返回值类型,若为null
则表示匹配无返回值的方法parameterTypes
- 参数类型,若为null
则表示匹配无参数的方法public static Predicate<Method> forStrictMethodSignature(String methodName, Class<?> returnType, Class<?>... parameterTypes)
用于匹配方法签名的方法匹配器,检查的内容包括:
null
则表示匹配无返回值的方法;null
则表示匹配无参数的方法;methodName
- 方法名returnType
- 返回值类型,若为null
则表示匹配无返回值的方法parameterTypes
- 参数类型,若为null
则表示匹配无参数的方法public static Predicate<Method> forStrictMethodSignature(Method method)
用于匹配方法签名的方法匹配器,检查的内容包括:
method
- 方法public static Predicate<Method> forName(String methodName)
用于根据方法名匹配方法的方法匹配器。
methodName
- 方法名public static Predicate<Method> forNameIgnoreCase(String methodName)
用于根据方法名匹配方法的方法匹配器,忽略方法名大小写。
methodName
- 方法名public static Predicate<Method> forNoneReturnType()
用于匹配无返回值的方法的方法匹配器。
public static Predicate<Method> forReturnType(Class<?> returnType)
用于匹配指定参数类型的方法的方法匹配器,只要参数类型可以赋值给方法参数类型。
returnType
- 返回值类型public static Predicate<Method> forStrictReturnType(Class<?> returnType)
用于匹配指定返回值类型的方法的方法匹配器,要求返回值类型与指定类型完全一致。
returnType
- 返回值类型public static Predicate<Method> forParameterCount(int count)
用于匹配指定参数个数的方法的方法匹配器。
count
- 参数个数public static Predicate<Method> forParameterTypes(Class<?>... parameterTypes)
用于匹配指定参数类型的方法的方法匹配器,只要参数类型可以赋值给方法参数类型即认为匹配成功。
比如:参数类型为ArrayList
,则方法参数类型可以为List
、Collection
等。
parameterTypes
- 参数类型public static Predicate<Method> forMostSpecificParameterTypes(Class<?>... parameterTypes)
用于匹配指定参数类型的方法的方法匹配器,与forParameterTypes(java.lang.Class<?>...)
不同的是,该方法仅用于尽量可能最匹配的方法
parameterTypes
中不为null
的参数类型,若参数类型为null
则表示匹配任意类型的参数;parameterTypes
长度,则仅要求parameterTypes
不为null
的类型与方法前N个参数类型匹配即可;parameterTypes
长度大于参数列表长度,则直接返回false
;method(String, Integer, Object)
,支持以下匹配:
forMostSpecificParameterTypes(CharSequence.class, Number.class, Object.class)
forMostSpecificParameterTypes(String.class, Integer.class, Object.class)
forMostSpecificParameterTypes(String.class, Integer.class, null)
forMostSpecificParameterTypes(String.class, null, null)
forMostSpecificParameterTypes(null, null, null)
forMostSpecificParameterTypes(String.class, Integer.class)
forMostSpecificParameterTypes(String.class)
parameterTypes
- 参数类型public static Predicate<Method> forMostSpecificStrictParameterTypes(Class<?>... parameterTypes)
用于匹配指定参数类型的方法的方法匹配器,与forParameterTypes(java.lang.Class<?>...)
不同的是,该方法仅用于尽量可能最匹配的方法
parameterTypes
中不为null
的参数类型,若参数类型为null
则表示匹配任意类型的参数;parameterTypes
长度,则仅要求parameterTypes
不为null
的类型与方法前N个参数类型匹配即可;parameterTypes
长度大于参数列表长度,则直接返回false
;method(String, Integer, Object)
,支持以下匹配:
forMostSpecificParameterTypes(String.class, Integer.class, Object.class)
forMostSpecificParameterTypes(String.class, Integer.class, null)
forMostSpecificParameterTypes(String.class, null, null)
forMostSpecificParameterTypes(null, null, null)
forMostSpecificParameterTypes(String.class, Integer.class)
forMostSpecificParameterTypes(String.class)
parameterTypes
- 参数类型Copyright © 2025. All rights reserved.