@ComponentSpecification public interface ReflectionUtil extends ReflectionUtilLimited
reflection
.AnnotationUtil
,
ReflectionUtilImpl
Modifier and Type | Field and Description |
---|---|
static String |
CDI_NAME
The
CDI name . |
static Annotation[] |
NO_ANNOTATIONS
An empty
Annotation -array. |
static Type[] |
NO_TYPES
an empty
Type -array |
NO_ARGUMENTS, NO_PARAMETERS
Modifier and Type | Method and Description |
---|---|
int |
compare(Class<?> class1,
Class<?> class2)
This method compares the given classes.
|
Set<String> |
findClassNames(String packageName,
boolean includeSubPackages)
This method finds all classes that are located in the package identified by the given
packageName . |
Set<String> |
findClassNames(String packageName,
boolean includeSubPackages,
Filter<String> filter)
This method finds all classes that are located in the package identified by the given
packageName . |
Set<String> |
findClassNames(String packageName,
boolean includeSubPackages,
Filter<String> filter,
ClassLoader classLoader)
This method finds all classes that are located in the package identified by the given
packageName . |
void |
findClassNames(String packageName,
boolean includeSubPackages,
Set<String> classSet)
This method finds all classes that are located in the package identified by the given
packageName . |
Set<String> |
findResourceNames(String packageName,
boolean includeSubPackages,
Filter<String> filter)
This method finds all resources that are located in the package identified by the given
packageName . |
Set<String> |
findResourceNames(String packageName,
boolean includeSubPackages,
Filter<String> filter,
ClassLoader classLoader)
This method finds all resources that are located in the package identified by the given
packageName . |
Set<DataResource> |
findResources(String absoluteClasspath)
This method finds all resources that match to the given
absoluteClasspath . |
Set<DataResource> |
findResources(String packageName,
boolean includeSubPackages,
Filter<String> filter)
This method finds all resources that are located in the package identified by the given
packageName . |
Set<DataResource> |
findResources(String packageName,
boolean includeSubPackages,
Filter<String> filter,
ClassLoader classLoader)
This method finds all resources that are located in the package identified by the given
packageName . |
Class<?> |
getArrayClass(Class<?> componentType)
|
Class<?>[] |
getClasses(Object[] objects)
This method gets the
classes of the given objects. |
Method |
getParentMethod(Class<?> inheritingClass,
String methodName,
Class<?>[] parameterTypes)
This method gets the method
identified by
methodName and parameterTypes that is NOT declared but inherited by the given declaringClass . |
Method |
getParentMethod(Method method)
This method gets the parent method of the given
method . |
<T> T |
getStaticField(Class<?> type,
String fieldName,
Class<T> fieldType,
boolean exactTypeMatch,
boolean mustBeFinal,
boolean inherit)
|
<T> T |
getStaticFieldOrNull(Class<?> type,
String fieldName,
Class<T> fieldType,
boolean exactTypeMatch,
boolean mustBeFinal,
boolean inherit) |
boolean |
isMarkerInterface(Class<?> interfaceClass)
This method determines if the given
interfaceClass is a marker-interface (e.g. |
Set<Class<?>> |
loadClasses(Collection<String> qualifiedClassNames)
This method loads the classes given as
Collection of fully qualified
names by qualifiedClassNames and returns them as Set . |
Set<Class<?>> |
loadClasses(Collection<String> classNames,
ClassResolver classResolver,
Filter<? super Class<?>> filter)
This method loads the classes given as
Collection of names by classNames using the
given classResolver . |
Set<Class<?>> |
loadClasses(Collection<String> qualifiedClassNames,
Filter<? super Class<?>> filter)
|
String |
toString(Type type)
This method gets the string representation of a
Type . |
void |
toString(Type type,
Appendable appendable,
Visitor<Class<?>> classFormatter)
This method gets the string representation of a
Type . |
Type |
toType(String type)
|
Type |
toType(String type,
ClassResolver resolver)
|
void |
visitObjectRecursive(Object object,
Filter<Object> visitor)
This method recursively traverses all objects starting from the given
Object via all properties
and contents. |
void |
visitObjectRecursive(Object object,
Filter<Object> visitor,
boolean loopProtection)
This method recursively traverses all objects starting from the given
Object via all properties
and contents. |
getNonPrimitiveType
createGenericType, createGenericType, createGenericType, createGenericType
static final String CDI_NAME
CDI name
.static final Annotation[] NO_ANNOTATIONS
Annotation
-array.Class<?>[] getClasses(Object[] objects)
classes
of the given objects.objects
- is an array containing the objects for that the classes are requested.class
of the object from the given array at the same position or
null
, if that object is null
.Class<?> getArrayClass(Class<?> componentType)
componentType
- is the component type
.array
-class.Type toType(String type) throws TypeNotFoundException, NlsIllegalArgumentException
type
- is the string representation of the requested type.TypeNotFoundException
- if a class could NOT be found (e.g. in
java.util.Map<java.long.String>
- what should be lang
instead of
long
).NlsIllegalArgumentException
- if the given type
could NOT be parsed (e.g.
java.util.Map<<String>
).toType(String, ClassResolver)
Type toType(String type, ClassResolver resolver) throws TypeNotFoundException, NlsIllegalArgumentException
type
- is the string representation of the requested type.resolver
- is used to resolve classes.TypeNotFoundException
- if a class could NOT be found (e.g. in
java.util.Map<java.long.String>
- what should be lang
instead of
long
).NlsIllegalArgumentException
- if the given type
could NOT be parsed (e.g.
java.util.Map<<String>
).String toString(Type type)
Type
. Instead of
Type
.toString()
it returns Class.getName()
if the type is a Class
.type
- is the type to get as string.type
.void toString(Type type, Appendable appendable, Visitor<Class<?>> classFormatter) throws RuntimeIoException
Type
. Instead of
Type
.toString()
it returns Class.getName()
if the type is a Class
.type
- is the type to get as string.appendable
- is where to append
the string representation
to.classFormatter
- is a Visitor
that gets called for each Class
and has to
append
as string-representation of the visited
Class
to the appendable
.RuntimeIoException
- if the Appendable
caused an IOException
int compare(Class<?> class1, Class<?> class2)
class1
- is the first class.class2
- is the second class.0
if both classes are equal to each other.1
if class1
inherits from class2
.-1
if class2
inherits from class1
.Integer.MIN_VALUE
otherwise.boolean isMarkerInterface(Class<?> interfaceClass)
interfaceClass
is a marker-interface (e.g.
Serializable
or Cloneable
). A marker-interface is also called a
tagging-interface.interfaceClass
- is the Class
reflecting the interface to check.true
if the given interfaceClass
is a marker-interface,
false
otherwise (if regular interface or no interface at all).<T> T getStaticField(Class<?> type, String fieldName, Class<T> fieldType, boolean exactTypeMatch, boolean mustBeFinal, boolean inherit) throws NoSuchFieldException, IllegalAccessException, IllegalArgumentException
T
- the templated type the requested field is assigned to.type
- is the class or interface containing the requested field.fieldName
- is the name
of the requested field.fieldType
- is the type the requested field is assigned to. Therefore the field declaration (!) must
be assignable to this type.exactTypeMatch
- - if true
, the fieldType
must match exactly the type of
the static field, else if false
the type of the field may be a sub-type of
fieldType
or one of the types may be primitive
while the
other is the according
object-type.mustBeFinal
- - if true
, an IllegalArgumentException
is thrown if the specified
static field exists but is NOT final
,
false
otherwise.inherit
- if true
the field may be inherited from a super-class
or super-interface
of type
, else if
false
the field is only accepted if it is declared in type
.NoSuchFieldException
- if the given type
has no field with the given
fieldName
.IllegalAccessException
- if you do not have permission to read the field (e.g. field is private).IllegalArgumentException
- if the field is NOT static (or final) or has the wrong type.<T> T getStaticFieldOrNull(Class<?> type, String fieldName, Class<T> fieldType, boolean exactTypeMatch, boolean mustBeFinal, boolean inherit) throws IllegalArgumentException
T
- the templated type the requested field is assigned to.type
- is the class or interface containing the requested field.fieldName
- is the name
of the requested field.fieldType
- is the type the requested field is assigned to. Therefore the field declaration (!) must
be assignable to this type.exactTypeMatch
- - if true
, the fieldType
must match exactly the type of
the static field, else if false
the type of the field may be a sub-type of
fieldType
or one of the types may be primitive
while the
other is the according
object-type.mustBeFinal
- - if true
, an IllegalArgumentException
is thrown if the specified
static field exists but is NOT final
,
false
otherwise.inherit
- if true
the field may be inherited from a super-class
or super-interface
of type
, else if
false
the field is only accepted if it is declared in type
.null
if the field does NOT exist or is
NOT accessible.IllegalArgumentException
- if the field is NOT static (or final) or has the wrong type.Method getParentMethod(Method method) throws SecurityException
method
. The parent method is the method
overridden (is the sense of Override
) by the given method
or directly inherited from
an interface
.method
- is the method.null
if no such method exists.SecurityException
- if access has been denied by the SecurityManager
.Method getParentMethod(Class<?> inheritingClass, String methodName, Class<?>[] parameterTypes) throws SecurityException
identified
by
methodName
and parameterTypes
that is NOT declared
but inherited by the given declaringClass
.inheritingClass
- is the class inheriting the requested method.methodName
- is the name
of the requested method.parameterTypes
- is the signature
of the requested method.null
if no such method exists.SecurityException
- if access has been denied by the SecurityManager
.getParentMethod(Class, String, Class[])
Set<String> findClassNames(String packageName, boolean includeSubPackages) throws RuntimeIoException
packageName
. packageName
- is the name of the Package
to scan.includeSubPackages
- - if true
all sub-packages of the specified Package
will
be included in the search.Set
with the fully qualified names of all requested classes.RuntimeIoException
- if the operation failed with an I/O error.Set<String> findClassNames(String packageName, boolean includeSubPackages, Filter<String> filter) throws RuntimeIoException
packageName
. packageName
- is the name of the Package
to scan.includeSubPackages
- - if true
all sub-packages of the specified Package
will
be included in the search.filter
- is used to filter
the Class
-names to be added to the
resulting Set
. The Filter
will receive fully qualified
class-names
as argument (e.g. "net.sf.mmm.reflect.api.ReflectionUtil").Set
with the fully qualified names of all requested classes.RuntimeIoException
- if the operation failed with an I/O error.Set<String> findClassNames(String packageName, boolean includeSubPackages, Filter<String> filter, ClassLoader classLoader) throws RuntimeIoException
packageName
. packageName
- is the name of the Package
to scan.includeSubPackages
- - if true
all sub-packages of the specified Package
will
be included in the search.filter
- is used to filter
the Class
-names to be added to the
resulting Set
. The Filter
will receive fully qualified
class-names
as argument (e.g. "net.sf.mmm.reflect.api.ReflectionUtil").classLoader
- is the explicit ClassLoader
to use.Set
with the fully qualified names of all requested classes.RuntimeIoException
- if the operation failed with an I/O error.void findClassNames(String packageName, boolean includeSubPackages, Set<String> classSet) throws RuntimeIoException
packageName
. packageName
- is the name of the Package
to scan.includeSubPackages
- - if true
all sub-packages of the specified Package
will
be included in the search.classSet
- is where to add the classes.RuntimeIoException
- if the operation failed with an I/O error.Set<Class<?>> loadClasses(Collection<String> qualifiedClassNames) throws TypeNotFoundException
Collection
of fully qualified
names
by qualifiedClassNames
and returns them as Set
.qualifiedClassNames
- is a collection containing the qualified names
of the
classes to load.Set
with all loaded classes.TypeNotFoundException
- if one of the classes could NOT be loaded.Set<Class<?>> loadClasses(Collection<String> qualifiedClassNames, Filter<? super Class<?>> filter) throws TypeNotFoundException
Collection
of fully qualified
names
by qualifiedClassNames
. It returns a Set
containing only those loaded classes
that are accepted
by the given filter
.qualifiedClassNames
- is a collection containing the qualified names
of the
classes to load.filter
- is used to filter the loaded classes.Set
with all loaded classes that are accepted
by the
given filter
.TypeNotFoundException
- if one of the classes could NOT be loaded.Set<Class<?>> loadClasses(Collection<String> classNames, ClassResolver classResolver, Filter<? super Class<?>> filter) throws TypeNotFoundException
Collection
of names by classNames
using the
given classResolver
. It returns a Set
containing only those loaded classes that are
accepted
by the given filter
.classNames
- is a collection containing the names of the classes to load. The class names should
typically be the qualified names
of the classes to load. But this may
differ depending on the classResolver
.classResolver
- is used to load/resolve the classes by their names.filter
- is used to filter the loaded classes.Set
with all loaded classes that are accepted
by the
given filter
.TypeNotFoundException
- if one of the classes could NOT be loaded.Set<String> findResourceNames(String packageName, boolean includeSubPackages, Filter<String> filter) throws RuntimeIoException
packageName
. packageName
- is the name of the Package
to scan. Both "." and "/" are accepted as separator
(e.g. "net.sf.mmm.util.reflect).includeSubPackages
- - if true
all sub-packages of the specified Package
will
be included in the search.filter
- is used to filter
the resources. The Filter
will
receive fully qualified classpath entries as argument (e.g.
"net/sf/mmm/util/reflect/beans-util-reflect.xml"). Typically you will exclude resources that end
with ".class" or only accept resources that end with ".xml".Set
with the fully qualified names of all requested resources (e.g.
"net/sf/mmm/util/reflect/beans-util-reflect.xml").RuntimeIoException
- if the operation failed with an I/O error.Set<String> findResourceNames(String packageName, boolean includeSubPackages, Filter<String> filter, ClassLoader classLoader) throws RuntimeIoException
packageName
. packageName
- is the name of the Package
to scan. Both "." and "/" are accepted as separator
(e.g. "net.sf.mmm.util.reflect).includeSubPackages
- - if true
all sub-packages of the specified Package
will
be included in the search.filter
- is used to filter
the resources. The Filter
will
receive fully qualified classpath entries as argument (e.g.
"net/sf/mmm/util/reflect/beans-util-reflect.xml"). Typically you will exclude resources that end
with ".class" or only accept resources that end with ".xml".classLoader
- is the explicit ClassLoader
to use.Set
with the fully qualified names of all requested resources (e.g.
"net/sf/mmm/util/reflect/beans-util-reflect.xml").RuntimeIoException
- if the operation failed with an I/O error.Set<DataResource> findResources(String packageName, boolean includeSubPackages, Filter<String> filter) throws RuntimeIoException
packageName
. packageName
- is the name of the Package
to scan. Both "." and "/" are accepted as separator
(e.g. "net.sf.mmm.util.reflect).includeSubPackages
- - if true
all sub-packages of the specified Package
will
be included in the search.filter
- is used to filter
the resources. Typically you will exclude
resources that end with ".class" or only accept resources that end with ".xml".Set
with all requested resources
.RuntimeIoException
- if the operation failed with an I/O error.Set<DataResource> findResources(String absoluteClasspath) throws RuntimeIoException
absoluteClasspath
. Unlike
ClasspathResource.ClasspathResource(String)
this method will return
all resources that with the given classpath (e.g. out of multiple JAR-files). absoluteClasspath
- is the absolute path to the resource. E.g.
"net/sf/mmm/util/resource/ClasspathResource.txt".Set
with all requested resources
.RuntimeIoException
- if the operation failed with an I/O error.Set<DataResource> findResources(String packageName, boolean includeSubPackages, Filter<String> filter, ClassLoader classLoader) throws RuntimeIoException
packageName
. packageName
- is the name of the Package
to scan. Both "." and "/" are accepted as separator
(e.g. "net.sf.mmm.util.reflect).includeSubPackages
- - if true
all sub-packages of the specified Package
will
be included in the search.filter
- is used to filter
the resources. Typically you will exclude
resources that end with ".class" or only accept resources that end with ".xml".classLoader
- is the explicit ClassLoader
to use.Set
with all requested resources
.RuntimeIoException
- if the operation failed with an I/O error.void visitObjectRecursive(Object object, Filter<Object> visitor)
Object
via all properties
and contents. It simply delegates to visitObjectRecursive(Object, Filter, boolean)
using
true
for loopProtection
.void visitObjectRecursive(Object object, Filter<Object> visitor, boolean loopProtection)
Object
via all properties
and contents. It supports Collection
s, Map
s, Object
arrays
, and Pojo
s. primitive
arrays
for performance reasons. Simply realize this inside your visitor
if you need it.object
- is the Object
to traverse recursively.visitor
- is the Filter
invoked
for all traversed
Object
s. If an Object
is not accepted
by this
Filter
the recursion stops at this point.loopProtection
- - true
to collect all visited Object
s in a Set
in
order to prevent infinity loops, false
otherwise (to save performance if no loops are
possible for the given Object
).Copyright © 2001–2014 mmm-Team. All rights reserved.