DISCLAIMER
These utilities are intended solely for usage within the JUnit framework itself. Any usage by external parties is not supported. Use at your own risk!
Some utilities are published via the maintained ReflectionSupport
class.
- Since:
- 1.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumModes in which a hierarchy can be traversed — for example, when searching for methods or fields within a class hierarchy. -
Method Summary
Modifier and TypeMethodDescriptionfindAllClassesInClasspathRoot(URI root, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) findAllClassesInClasspathRoot(URI root, ClassFilter classFilter) findAllClassesInModule(String moduleName, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) findAllClassesInModule(String moduleName, ClassFilter classFilter) findAllClassesInPackage(String basePackageName, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) findAllClassesInPackage(String basePackageName, ClassFilter classFilter) findAllResourcesInClasspathRoot(URI root, Predicate<Resource> resourceFilter) findAllResourcesInModule(String moduleName, Predicate<Resource> resourceFilter) findAllResourcesInPackage(String basePackageName, Predicate<Resource> resourceFilter) static List<Constructor<?>> findConstructors(Class<?> clazz, Predicate<Constructor<?>> predicate) Find all constructors in the supplied class that match the supplied predicate.findFields(Class<?> clazz, Predicate<Field> predicate, ReflectionUtils.HierarchyTraversalMode traversalMode) findMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) findMethod(Class<?> clazz, String methodName, String parameterTypeNames) findMethods(Class<?> clazz, Predicate<Method> predicate) Find all methods of the supplied class or interface that match the specifiedpredicate, using top-down search semantics within the type hierarchy.findMethods(Class<?> clazz, Predicate<Method> predicate, ReflectionUtils.HierarchyTraversalMode traversalMode) findNestedClasses(Class<?> clazz, Predicate<Class<?>> predicate) getAllAssignmentCompatibleClasses(Class<?> clazz) Return all classes and interfaces that can be used as assignment types for instances of the specifiedClass, including itself.static <T> Constructor<T> getDeclaredConstructor(Class<T> clazz) Get the sole declared, non-syntheticConstructorfor the supplied class.static StringgetFullyQualifiedMethodName(Class<?> clazz, Method method) Build the fully qualified method name for the method described by the supplied class and method.static StringgetFullyQualifiedMethodName(Class<?> clazz, String methodName, Class<?>... parameterTypes) Build the fully qualified method name for the method described by the supplied class, method name, and parameter types.static StringgetFullyQualifiedMethodName(String className, String methodName, String parameterTypeNames) Build the fully qualified method name for the method described by the supplied class name, method name, and parameter types.static MethodgetInterfaceMethodIfPossible(Method method, Class<?> targetClass) Determine a corresponding interface method for the given method handle, if possible.static MethodgetRequiredMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) Find the firstMethodof the supplied class or interface that meets the specified criteria, beginning with the specified class or interface and traversing up the type hierarchy until such a method is found or the type hierarchy is exhausted.static Class<?> getWrapperType(Class<?> type) Get the wrapper type for the supplied primitive type.static ObjectinvokeMethod(Method method, Object target, Object... args) static booleanisAbstract(Class<?> clazz) static booleanisAbstract(Member member) static booleanDetermine if the supplied object is an array.static booleanisAssignableTo(Class<?> sourceType, Class<?> targetType) Determine if an object of the supplied source type can be assigned to the supplied target type for the purpose of reflective method invocations.static booleanisAssignableTo(Object obj, Class<?> targetType) Determine if the supplied object can be assigned to the supplied target type for the purpose of reflective method invocations.static booleanstatic booleanstatic booleanisInnerClass(Class<?> clazz) Determine if the supplied class is an inner class (i.e., a non-static member class).static booleanisMethodPresent(Class<?> clazz, Predicate<Method> predicate) static booleanDetermine if the supplied object is a multidimensional array.static booleanisNotFinal(Class<?> clazz) static booleanisNotFinal(Member member) static booleanisNotPrivate(Class<?> clazz) static booleanisNotPrivate(Member member) static booleanisNotStatic(Class<?> clazz) static booleanisNotStatic(Member member) static booleanstatic booleanstatic booleanstatic booleanstatic booleanisRecordClass(Class<?> clazz) Returns whether the suppliedclazzis a record class.static booleanisRecordObject(Object object) Returns whether the suppliedobjectis an instance of a record class.static booleanstatic booleanDeprecated.loadClass(String name, ClassLoader classLoader) Deprecated.Please usetryToLoadClass(String, ClassLoader)instead.static Class<?> loadRequiredClass(String name, ClassLoader classLoader) Load a class by its primitive name or fully qualified name, using the suppliedClassLoader.static FieldmakeAccessible(Field field) static <T extends Executable>
TmakeAccessible(T executable) static <T> TnewInstance(Class<T> clazz, Object... args) static <T> TnewInstance(Constructor<T> constructor, Object... args) Create a new instance of typeTby invoking the supplied constructor with the supplied arguments.static String[]parseFullyQualifiedFieldName(String fullyQualifiedFieldName) Parse the supplied fully qualified field name into a 2-elementString[]with the following content.static String[]parseFullyQualifiedMethodName(String fullyQualifiedMethodName) Parse the supplied fully qualified method name into a 3-elementString[]with the following content.readFieldValue(Class<T> clazz, String fieldName, T instance) Deprecated.Please usetryToReadFieldValue(Class, String, Object)instead.readFieldValue(Field field) Deprecated.Please usetryToReadFieldValue(Field)instead.readFieldValue(Field field, Object instance) Deprecated.Please usetryToReadFieldValue(Field, Object)instead.readFieldValues(List<Field> fields, Object instance) Read the values of the supplied fields, making each field accessible if necessary and masking any checked exception as an unchecked exception.Read the values of the supplied fields, making each field accessible if necessary, masking any checked exception as an unchecked exception, and filtering out fields that do not pass the suppliedpredicate.static Class<?>[]resolveParameterTypes(Class<?> clazz, String methodName, String parameterTypeNames) static booleanreturnsPrimitiveVoid(Method method) Determine if the return type of the supplied method is primitivevoid.streamAllClassesInClasspathRoot(URI root, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) streamAllClassesInClasspathRoot(URI root, ClassFilter classFilter) streamAllClassesInModule(String moduleName, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) streamAllClassesInModule(String moduleName, ClassFilter classFilter) streamAllClassesInPackage(String basePackageName, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) since 1.10streamAllClassesInPackage(String basePackageName, ClassFilter classFilter) streamAllResourcesInClasspathRoot(URI root, Predicate<Resource> resourceFilter) streamAllResourcesInModule(String moduleName, Predicate<Resource> resourceFilter) streamAllResourcesInPackage(String basePackageName, Predicate<Resource> resourceFilter) streamFields(Class<?> clazz, Predicate<Field> predicate, ReflectionUtils.HierarchyTraversalMode traversalMode) streamMethods(Class<?> clazz, Predicate<Method> predicate, ReflectionUtils.HierarchyTraversalMode traversalMode) streamNestedClasses(Class<?> clazz, Predicate<Class<?>> predicate) since 1.10tryToGetMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) Try to get theMethodin the specified class with the specified name and parameter types.tryToGetResources(String classpathResourceName) Try to get resources by their name, using theClassLoaderUtils.getDefaultClassLoader().tryToGetResources(String classpathResourceName, ClassLoader classLoader) Try to get resources by their name, using the suppliedClassLoader.tryToLoadClass(String name) tryToLoadClass(String name, ClassLoader classLoader) Try to load a class by its primitive name or fully qualified name, using the suppliedClassLoader.tryToReadFieldValue(Class<T> clazz, String fieldName, T instance) Try to read the value of a potentially inaccessible or nonexistent field.tryToReadFieldValue(Field field) Try to read the value of a potentially inaccessible static field.tryToReadFieldValue(Field field, Object instance)
-
Method Details
-
isPublic
-
isPublic
-
isPrivate
-
isPrivate
-
isNotPrivate
-
isNotPrivate
-
isAbstract
-
isAbstract
-
isStatic
-
isNotStatic
-
isStatic
-
isNotStatic
-
isFinal
- Since:
- 1.5
-
isNotFinal
- Since:
- 1.5
-
isFinal
- Since:
- 1.5
-
isNotFinal
- Since:
- 1.5
-
isInnerClass
Determine if the supplied class is an inner class (i.e., a non-static member class).Technically speaking (i.e., according to the Java Language Specification), "an inner class may be a non-static member class, a local class, or an anonymous class." However, this method does not return
truefor a local or anonymous class.- Parameters:
clazz- the class to check; nevernull- Returns:
trueif the class is an inner class
-
isRecordObject
Returns whether the suppliedobjectis an instance of a record class.- Returns:
- whether the supplied
objectis an instance of a record class - Since:
- 1.12
-
isRecordClass
Returns whether the suppliedclazzis a record class.- Returns:
- whether the supplied
clazzis a record class - Since:
- 1.12
-
returnsPrimitiveVoid
Determine if the return type of the supplied method is primitivevoid.- Parameters:
method- the method to test; nevernull- Returns:
trueif the method's return type isvoid
-
isArray
Determine if the supplied object is an array.- Parameters:
obj- the object to test; potentiallynull- Returns:
trueif the object is an array
-
isMultidimensionalArray
Determine if the supplied object is a multidimensional array.- Parameters:
obj- the object to test; potentiallynull- Returns:
trueif the object is a multidimensional array- Since:
- 1.3.2
-
isAssignableTo
Determine if an object of the supplied source type can be assigned to the supplied target type for the purpose of reflective method invocations.In contrast to
Class.isAssignableFrom(Class), this method returnstrueif the target type represents a primitive type whose wrapper matches the supplied source type. In addition, this method also supports widening conversions for primitive target types.- Parameters:
sourceType- the non-primitive target type; nevernulltargetType- the target type; nevernull- Returns:
trueif an object of the source type is assignment compatible with the target type- Since:
- 1.8
- See Also:
-
isAssignableTo
Determine if the supplied object can be assigned to the supplied target type for the purpose of reflective method invocations.In contrast to
Class.isInstance(Object), this method returnstrueif the target type represents a primitive type whose wrapper matches the supplied object's type. In addition, this method also supports widening conversions for primitive types and their corresponding wrapper types.If the supplied object is
nulland the supplied type does not represent a primitive type, this method returnstrue.- Parameters:
obj- the object to test for assignment compatibility; potentiallynulltargetType- the type to check against; nevernull- Returns:
trueif the object is assignment compatible- See Also:
-
getWrapperType
Get the wrapper type for the supplied primitive type.- Parameters:
type- the primitive type for which to retrieve the wrapper type- Returns:
- the corresponding wrapper type or
nullif the supplied type isnullor not a primitive type
-
newInstance
- See Also:
-
newInstance
Create a new instance of typeTby invoking the supplied constructor with the supplied arguments.The constructor will be made accessible if necessary, and any checked exception will be masked as an unchecked exception.
- Parameters:
constructor- the constructor to invoke; nevernullargs- the arguments to pass to the constructor- Returns:
- the new instance; never
null - See Also:
-
readFieldValue
@API(status=DEPRECATED, since="1.4") @Deprecated public static <T> Optional<Object> readFieldValue(Class<T> clazz, String fieldName, T instance) Deprecated.Please usetryToReadFieldValue(Class, String, Object)instead.Read the value of a potentially inaccessible or nonexistent field.If the field does not exist or the value of the field is
null, an emptyOptionalwill be returned.- Parameters:
clazz- the class where the field is declared; nevernullfieldName- the name of the field; nevernullor emptyinstance- the instance from where the value is to be read; may benullfor a static field- See Also:
-
tryToReadFieldValue
@API(status=INTERNAL, since="1.4") public static <T> Try<Object> tryToReadFieldValue(Class<T> clazz, String fieldName, T instance) Try to read the value of a potentially inaccessible or nonexistent field.If the field does not exist or an exception occurs while reading it, a failed
Tryis returned that contains the corresponding exception.- Parameters:
clazz- the class where the field is declared; nevernullfieldName- the name of the field; nevernullor emptyinstance- the instance from where the value is to be read; may benullfor a static field- Since:
- 1.4
- See Also:
-
readFieldValue
@API(status=DEPRECATED, since="1.4") @Deprecated public static Optional<Object> readFieldValue(Field field) Deprecated.Please usetryToReadFieldValue(Field)instead.Read the value of the supplied static field, making it accessible if necessary and masking any checked exception as an unchecked exception.If the value of the field is
null, an emptyOptionalwill be returned.- Parameters:
field- the field to read; nevernull- See Also:
-
tryToReadFieldValue
Try to read the value of a potentially inaccessible static field.If an exception occurs while reading the field, a failed
Tryis returned that contains the corresponding exception.- Parameters:
field- the field to read; nevernull- Since:
- 1.4
- See Also:
-
readFieldValue
@API(status=DEPRECATED, since="1.4") @Deprecated public static Optional<Object> readFieldValue(Field field, Object instance) Deprecated.Please usetryToReadFieldValue(Field, Object)instead.Read the value of the supplied field, making it accessible if necessary and masking any checked exception as an unchecked exception.If the value of the field is
null, an emptyOptionalwill be returned.- Parameters:
field- the field to read; nevernullinstance- the instance from which the value is to be read; may benullfor a static field- See Also:
-
tryToReadFieldValue
@API(status=INTERNAL, since="1.4") public static Try<Object> tryToReadFieldValue(Field field, Object instance) - Since:
- 1.4
- See Also:
-
readFieldValues
Read the values of the supplied fields, making each field accessible if necessary and masking any checked exception as an unchecked exception.- Parameters:
fields- the list of fields to read; nevernullinstance- the instance from which the values are to be read; may benullfor static fields- Returns:
- an immutable list of the values of the specified fields; never
nullbut may be empty or containnullentries
-
readFieldValues
public static List<Object> readFieldValues(List<Field> fields, Object instance, Predicate<Field> predicate) Read the values of the supplied fields, making each field accessible if necessary, masking any checked exception as an unchecked exception, and filtering out fields that do not pass the suppliedpredicate.- Parameters:
fields- the list of fields to read; nevernullinstance- the instance from which the values are to be read; may benullfor static fieldspredicate- the field filter; nevernull- Returns:
- an immutable list of the values of the specified fields; never
nullbut may be empty or containnullentries
-
invokeMethod
- See Also:
-
loadClass
@API(status=DEPRECATED, since="1.4") @Deprecated public static Optional<Class<?>> loadClass(String name) Deprecated.Please usetryToLoadClass(String)instead.- See Also:
-
tryToLoadClass
- Since:
- 1.4
- See Also:
-
loadClass
@API(status=DEPRECATED, since="1.4") @Deprecated public static Optional<Class<?>> loadClass(String name, ClassLoader classLoader) Deprecated.Please usetryToLoadClass(String, ClassLoader)instead.Load a class by its primitive name or fully qualified name, using the suppliedClassLoader.See
ReflectionSupport.loadClass(String)for details on support for class names for arrays.- Parameters:
name- the name of the class to load; nevernullor blankclassLoader- theClassLoaderto use; nevernull- See Also:
-
loadRequiredClass
@API(status=INTERNAL, since="1.11") public static Class<?> loadRequiredClass(String name, ClassLoader classLoader) throws JUnitException Load a class by its primitive name or fully qualified name, using the suppliedClassLoader.See
ReflectionSupport.tryToLoadClass(String)for details on support for class names for arrays.- Parameters:
name- the name of the class to load; nevernullor blankclassLoader- theClassLoaderto use; nevernull- Throws:
JUnitException- if the class could not be loaded- Since:
- 1.11
- See Also:
-
tryToLoadClass
@API(status=INTERNAL, since="1.4") public static Try<Class<?>> tryToLoadClass(String name, ClassLoader classLoader) Try to load a class by its primitive name or fully qualified name, using the suppliedClassLoader.See
ReflectionSupport.tryToLoadClass(String)for details on support for class names for arrays.- Parameters:
name- the name of the class to load; nevernullor blankclassLoader- theClassLoaderto use; nevernull- Since:
- 1.4
- See Also:
-
tryToGetResources
@API(status=INTERNAL, since="1.12") public static Try<Set<Resource>> tryToGetResources(String classpathResourceName) Try to get resources by their name, using theClassLoaderUtils.getDefaultClassLoader().See
ReflectionSupport.tryToGetResources(String)for details.- Parameters:
classpathResourceName- the name of the resources to load; nevernullor blank- Since:
- 1.12
- See Also:
-
tryToGetResources
@API(status=INTERNAL, since="1.12") public static Try<Set<Resource>> tryToGetResources(String classpathResourceName, ClassLoader classLoader) Try to get resources by their name, using the suppliedClassLoader.See
ReflectionSupport.tryToGetResources(String, ClassLoader)for details.- Parameters:
classpathResourceName- the name of the resources to load; nevernullor blankclassLoader- theClassLoaderto use; nevernull- Since:
- 1.12
-
getFullyQualifiedMethodName
Build the fully qualified method name for the method described by the supplied class and method.Note that the class is not necessarily the class in which the method is declared.
- Parameters:
clazz- the class from which the method should be referenced; nevernullmethod- the method; nevernull- Returns:
- fully qualified method name; never
null - Since:
- 1.4
- See Also:
-
getFullyQualifiedMethodName
public static String getFullyQualifiedMethodName(Class<?> clazz, String methodName, Class<?>... parameterTypes) Build the fully qualified method name for the method described by the supplied class, method name, and parameter types.Note that the class is not necessarily the class in which the method is declared.
- Parameters:
clazz- the class from which the method should be referenced; nevernullmethodName- the name of the method; nevernullor blankparameterTypes- the parameter types of the method; may benullor empty- Returns:
- fully qualified method name; never
null
-
getFullyQualifiedMethodName
@API(status=INTERNAL, since="1.11") public static String getFullyQualifiedMethodName(String className, String methodName, String parameterTypeNames) Build the fully qualified method name for the method described by the supplied class name, method name, and parameter types.Note that the class is not necessarily the class in which the method is declared.
- Parameters:
className- the name of the class from which the method should be referenced; nevernullmethodName- the name of the method; nevernullor blankparameterTypeNames- the parameter type names of the method; may be empty but notnull- Returns:
- fully qualified method name; never
null - Since:
- 1.11
-
parseFullyQualifiedMethodName
Parse the supplied fully qualified method name into a 3-elementString[]with the following content.- index
0: the fully qualified class name - index
1: the name of the method - index
2: a comma-separated list of parameter types, or a blank string if the method does not declare any formal parameters
- Parameters:
fullyQualifiedMethodName- a fully qualified method name, nevernullor blank- Returns:
- a 3-element array of strings containing the parsed values
- index
-
parseFullyQualifiedFieldName
@API(status=INTERNAL, since="1.11") public static String[] parseFullyQualifiedFieldName(String fullyQualifiedFieldName) Parse the supplied fully qualified field name into a 2-elementString[]with the following content.- index
0: the fully qualified class name - index
1: the name of the field
- Parameters:
fullyQualifiedFieldName- a fully qualified field name, nevernullor blank- Returns:
- a 2-element array of strings containing the parsed values
- Since:
- 1.11
- index
-
getAllClasspathRootDirectories
-
findAllClassesInClasspathRoot
public static List<Class<?>> findAllClassesInClasspathRoot(URI root, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) - See Also:
-
streamAllClassesInClasspathRoot
public static Stream<Class<?>> streamAllClassesInClasspathRoot(URI root, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) - Since:
- 1.10
- See Also:
-
findAllClassesInClasspathRoot
- Since:
- 1.1
-
findAllResourcesInClasspathRoot
public static List<Resource> findAllResourcesInClasspathRoot(URI root, Predicate<Resource> resourceFilter) - Since:
- 1.11
-
streamAllClassesInClasspathRoot
- Since:
- 1.10
-
streamAllResourcesInClasspathRoot
public static Stream<Resource> streamAllResourcesInClasspathRoot(URI root, Predicate<Resource> resourceFilter) - Since:
- 1.11
-
findAllClassesInPackage
public static List<Class<?>> findAllClassesInPackage(String basePackageName, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) - See Also:
-
streamAllClassesInPackage
public static Stream<Class<?>> streamAllClassesInPackage(String basePackageName, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) since 1.10- See Also:
-
findAllClassesInPackage
public static List<Class<?>> findAllClassesInPackage(String basePackageName, ClassFilter classFilter) - Since:
- 1.1
-
findAllResourcesInPackage
public static List<Resource> findAllResourcesInPackage(String basePackageName, Predicate<Resource> resourceFilter) - Since:
- 1.11
-
streamAllClassesInPackage
public static Stream<Class<?>> streamAllClassesInPackage(String basePackageName, ClassFilter classFilter) - Since:
- 1.10
-
streamAllResourcesInPackage
public static Stream<Resource> streamAllResourcesInPackage(String basePackageName, Predicate<Resource> resourceFilter) - Since:
- 1.11
-
findAllClassesInModule
public static List<Class<?>> findAllClassesInModule(String moduleName, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) - Since:
- 1.1.1
- See Also:
-
streamAllClassesInModule
public static Stream<Class<?>> streamAllClassesInModule(String moduleName, Predicate<Class<?>> classFilter, Predicate<String> classNameFilter) - Since:
- 1.10
- See Also:
-
findAllClassesInModule
- Since:
- 1.1.1
-
findAllResourcesInModule
public static List<Resource> findAllResourcesInModule(String moduleName, Predicate<Resource> resourceFilter) - Since:
- 1.11
-
streamAllClassesInModule
- Since:
- 1.10
-
streamAllResourcesInModule
public static Stream<Resource> streamAllResourcesInModule(String moduleName, Predicate<Resource> resourceFilter) - Since:
- 1.11
-
findNestedClasses
- See Also:
-
streamNestedClasses
since 1.10- See Also:
-
getDeclaredConstructor
Get the sole declared, non-syntheticConstructorfor the supplied class.Throws a
PreconditionViolationExceptionif the supplied class declares more than one non-synthetic constructor.- Parameters:
clazz- the class to get the constructor for- Returns:
- the sole declared constructor; never
null - See Also:
-
findConstructors
public static List<Constructor<?>> findConstructors(Class<?> clazz, Predicate<Constructor<?>> predicate) Find all constructors in the supplied class that match the supplied predicate.Note that this method may return synthetic constructors. If you wish to ignore synthetic constructors, you may filter them out with the supplied
predicateor filter them out of the list returned by this method.- Parameters:
clazz- the class in which to search for constructors; nevernullpredicate- the predicate to use to test for a match; nevernull- Returns:
- an immutable list of all such constructors found; never
nullbut potentially empty - See Also:
-
findFields
public static List<Field> findFields(Class<?> clazz, Predicate<Field> predicate, ReflectionUtils.HierarchyTraversalMode traversalMode) - See Also:
-
streamFields
public static Stream<Field> streamFields(Class<?> clazz, Predicate<Field> predicate, ReflectionUtils.HierarchyTraversalMode traversalMode) - Since:
- 1.10
- See Also:
-
isMethodPresent
Determine if aMethodmatching the suppliedPredicateis present within the type hierarchy of the specified class, beginning with the specified class or interface and traversing up the type hierarchy until such a method is found or the type hierarchy is exhausted.- Parameters:
clazz- the class or interface in which to find the method; nevernullpredicate- the predicate to use to test for a match; nevernull- Returns:
trueif such a method is present- See Also:
-
tryToGetMethod
@API(status=INTERNAL, since="1.4") public static Try<Method> tryToGetMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) Try to get theMethodin the specified class with the specified name and parameter types.This method delegates to
Class.getMethod(String, Class...)but catches any exception thrown.- Parameters:
clazz- the class in which to search for the method; nevernullmethodName- the name of the method to get; nevernullor blankparameterTypes- the parameter types of the method; may benullor empty- Returns:
- a successful
Trycontaining the method or a failedTrycontaining theNoSuchMethodExceptionthrown byClass#getMethod(); nevernull - Since:
- 1.4
-
getInterfaceMethodIfPossible
@API(status=INTERNAL, since="1.11") public static Method getInterfaceMethodIfPossible(Method method, Class<?> targetClass) Determine a corresponding interface method for the given method handle, if possible.This is particularly useful for arriving at a public exported type on the Java Module System which can be reflectively invoked without an illegal access warning.
- Parameters:
method- the method to be invoked, potentially from an implementation class; nevernulltargetClass- the target class to check for declared interfaces; potentiallynull- Returns:
- the corresponding interface method, or the original method if none found
- Since:
- 1.11
-
findMethod
public static Optional<Method> findMethod(Class<?> clazz, String methodName, String parameterTypeNames) - See Also:
-
resolveParameterTypes
-
findMethod
public static Optional<Method> findMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) - See Also:
-
getRequiredMethod
@API(status=STABLE, since="1.7") public static Method getRequiredMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) Find the firstMethodof the supplied class or interface that meets the specified criteria, beginning with the specified class or interface and traversing up the type hierarchy until such a method is found or the type hierarchy is exhausted.Use this method as an alternative to
findMethod(Class, String, Class...)for use cases in which the method is required to be present.- Parameters:
clazz- the class or interface in which to find the method; nevernullmethodName- the name of the method to find; nevernullor emptyparameterTypes- the types of parameters accepted by the method, if any; nevernull- Returns:
- the
Methodfound; nevernull - Throws:
JUnitException- if no method is found- Since:
- 1.7
- See Also:
-
findMethods
Find all methods of the supplied class or interface that match the specifiedpredicate, using top-down search semantics within the type hierarchy.The results will not contain instance methods that are overridden.
- Parameters:
clazz- the class or interface in which to find the methods; nevernullpredicate- the method filter; nevernull- Returns:
- an immutable list of all such methods found; never
null - See Also:
-
findMethods
public static List<Method> findMethods(Class<?> clazz, Predicate<Method> predicate, ReflectionUtils.HierarchyTraversalMode traversalMode) - See Also:
-
streamMethods
public static Stream<Method> streamMethods(Class<?> clazz, Predicate<Method> predicate, ReflectionUtils.HierarchyTraversalMode traversalMode) - Since:
- 1.10
- See Also:
-
makeAccessible
@API(status=INTERNAL, since="1.11") public static <T extends Executable> T makeAccessible(T executable) -
makeAccessible
-
getAllAssignmentCompatibleClasses
Return all classes and interfaces that can be used as assignment types for instances of the specifiedClass, including itself.- Parameters:
clazz- theClassto look up- See Also:
-
tryToLoadClass(String)instead.