|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
@ComponentSpecification public interface ReflectionUtil
This is the interface for a collection of utility functions to deal with
reflection
.
ReflectionUtilImpl
Field Summary | |
---|---|
static Object[] |
NO_ARGUMENTS
an empty Object -array |
static Class<?>[] |
NO_PARAMETERS
an empty class array |
static Type[] |
NO_TYPES
an empty Type -array |
Method Summary | ||
---|---|---|
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)
This method creates the Class reflecting an array of the given
. |
|
Class<?>[] |
getClasses(Object[] objects)
This method gets the classes of the given
objects. |
|
Class<?> |
getNonPrimitiveType(Class<?> type)
This method gets the according non- primitive
type for the class given by type . |
|
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 . |
|
|
getStaticField(Class<?> type,
String fieldName,
Class<T> fieldType,
boolean exactTypeMatch,
boolean mustBeFinal,
boolean inherit)
This method gets the value of a static
field . |
|
|
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)
This method loads the classes given as Collection of
fully qualified names by
qualifiedClassNames . |
|
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)
This method is the analogy to Class.forName(String) for creating a
Type instance from String . |
|
Type |
toType(String type,
ClassResolver resolver)
This method is the analogy to Class.forName(String) for creating a
Type instance from String . |
Methods inherited from interface net.sf.mmm.util.reflect.api.GenericTypeFactory |
---|
createGenericType, createGenericType, createGenericType, createGenericType |
Field Detail |
---|
static final Class<?>[] NO_PARAMETERS
static final Object[] NO_ARGUMENTS
Object
-array
static final Type[] NO_TYPES
Type
-array
Method Detail |
---|
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)
Class
reflecting an array
of the given
componentType
.
componentType
- is the component type
.
array
-class.Type toType(String type) throws TypeNotFoundException, NlsIllegalArgumentException
Class.forName(String)
for creating a
Type
instance from String
.
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
Class.forName(String)
for creating a
Type
instance from String
.
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.Class<?> getNonPrimitiveType(Class<?> type)
primitive
type for the class given by type
.getNonPrimitiveType
(int.class)
will return Integer.class
.
type
- is the (potentially) primitive
type.
type
. This
will be the given type
itself if it is NOT
primitive
.Class.isPrimitive()
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
value
of a static
field
.
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.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |