|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.sf.mmm.util.component.base.AbstractComponent
net.sf.mmm.util.component.base.AbstractLoggableComponent
net.sf.mmm.util.reflect.base.ReflectionUtilImpl
@Singleton @Named public class ReflectionUtilImpl
This class is a collection of utility functions for dealing with
reflection
.
getInstance()
Field Summary | |
---|---|
private static CharFilter |
CHAR_FILTER
|
private static ReflectionUtil |
instance
|
private static String |
WEB_INF_CLASSES
The prefix of resources in WAR-files. |
Fields inherited from interface net.sf.mmm.util.reflect.api.ReflectionUtil |
---|
NO_ARGUMENTS, NO_PARAMETERS, NO_TYPES |
Constructor Summary | |
---|---|
ReflectionUtilImpl()
The constructor. |
Method Summary | ||
---|---|---|
int |
compare(Class<?> class1,
Class<?> class2)
This method compares the given classes. |
|
|
createGenericType(Class<T> type)
This method creates the GenericType representing the given
type . |
|
GenericType<?> |
createGenericType(Type type)
This method creates the GenericType representing the given
type . |
|
GenericType<?> |
createGenericType(Type type,
Class<?> definingType)
This method creates the GenericType representing the given
type in the context of the given definingType . |
|
GenericType<?> |
createGenericType(Type type,
GenericType<?> definingType)
This method creates the GenericType representing the given
type in the context of the given definingType . |
|
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 . |
|
protected void |
findClassNames(String packageName,
boolean includeSubPackages,
Set<String> classSet,
Filter<String> filter,
ClassLoader classLoader)
|
|
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. |
|
protected ClassLoader |
getDefaultClassLoader()
This method gets the default ClassLoader to use. |
|
protected ClassLoader |
getDefaultClassLoader(Class<?> fallbackClass)
This method gets the default ClassLoader to use. |
|
protected Type |
getGenericDeclaration(Class<?> ancestor,
Class<?> descendant)
This method walks up the Class -hierarchy from
descendant up to ancestor and returns the
sub-class or sub-interface of ancestor on that hierarchy-path. |
|
static ReflectionUtil |
getInstance()
This method gets the singleton instance of this ReflectionUtil . |
|
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)
|
|
protected Class<?> |
getSubClass(Class<?> ancestor,
Class<?> descendant)
This method walks up the Class -hierarchy from
descendant up to ancestor and returns the
sub-class or sub-interface of ancestor on that hierarchy-path. |
|
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 . |
|
private Type |
toType(CharSequenceScanner parser,
ClassResolver resolver,
Type owner)
This method parses the given type as generic 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 . |
|
void |
visitResourceNames(String packageName,
boolean includeSubPackages,
ClassLoader classLoader,
ResourceVisitor visitor)
This method does the actual magic to locate resources on the classpath. |
|
private static void |
visitResources(File packageDirectory,
StringBuilder qualifiedNameBuilder,
int qualifiedNamePrefixLength,
ResourceVisitor visitor)
This method scans the given packageDirectory recursively for
resources. |
Methods inherited from class net.sf.mmm.util.component.base.AbstractLoggableComponent |
---|
doInitialize, getLogger, setLogger |
Methods inherited from class net.sf.mmm.util.component.base.AbstractComponent |
---|
doInitialized, getInitializationState, initialize |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final String WEB_INF_CLASSES
private static ReflectionUtil instance
getInstance()
private static final CharFilter CHAR_FILTER
toType(CharSequenceScanner, ClassResolver, Type)
Constructor Detail |
---|
public ReflectionUtilImpl()
Method Detail |
---|
public static ReflectionUtil getInstance()
ReflectionUtil
.getInstance()
methods and
construct new instances via the container-framework of your choice (like
plexus, pico, springframework, etc.). To wire up the dependent components
everything is properly annotated using common-annotations (JSR-250). If
your container does NOT support this, you should consider using a better
one.
public Class<?>[] getClasses(Object[] objects)
classes
of the given
objects.
getClasses
in interface ReflectionUtil
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
.public <T> GenericType<T> createGenericType(Class<T> type)
GenericType
representing the given
type
.type
,
lower bound
and
upper bound
of the returned
GenericType
will all be identical to the given type
.Type
where the given type
was
defined
you should use GenericTypeFactory.createGenericType(Type, GenericType)
instead to get a more precise result.
createGenericType
in interface GenericTypeFactory
T
- is the generic type of the Class
to convert.type
- is the Type
to represent.
GenericType
.public GenericType<?> createGenericType(Type type)
GenericType
representing the given
type
.type
is a Class
, the methods behaves like
GenericTypeFactory.createGenericType(Class)
.Type
where the given type
was defined
(e.g. the Class
where you retrieved the given type
from as parameter, return-type or field-type) you should use
GenericTypeFactory.createGenericType(Type, GenericType)
instead to get a more precise
result.
createGenericType
in interface GenericTypeFactory
type
- is the Type
to represent.
GenericType
.public GenericType<?> createGenericType(Type type, GenericType<?> definingType)
GenericType
representing the given
type
in the context of the given definingType
.Now if you ask your self why all this instead of just usingReflectionUtil
util =getInstance()
; Class<?> myClass = getSomeClass(); GenericType definingType = util.createGenericType
(myClass);Method
myMethod = findSomeMethod(myClass); Type returnType = myMethod.getGenericReturnType()
; GenericType type = util.createGenericType
(returnType, definingType); Class<?> returnClass = type.GenericType.getRetrievalClass()
;
myMethod.getReturnType()
? Read the javadoc of GenericType
to get the answer.mmm-util-pojo
which allows to use this features
at a higher level and therefore much easier.
createGenericType
in interface GenericTypeFactory
type
- is the Type
to represent.definingType
- is the GenericType
where the given
type
is defined in. It is needed to resolve
TypeVariable
s.
GenericType
.GenericTypeFactory.createGenericType(Type, Class)
public GenericType<?> createGenericType(Type type, Class<?> definingType)
GenericType
representing the given
type
in the context of the given definingType
.createGenericType
(type,
createGenericType
(definingType))
createGenericType
in interface GenericTypeFactory
type
- is the Type
to represent.definingType
- is the Class
where the given type
is defined in. It is needed to resolve
TypeVariable
s.
GenericType
.protected Class<?> getSubClass(Class<?> ancestor, Class<?> descendant)
Class
-hierarchy from
descendant
up to ancestor
and returns the
sub-class or sub-interface of ancestor
on that hierarchy-path.ancestor
is an interface
, the hierarchy may NOT be unique. In such case it will be
unspecified which of the possible paths is used.
ancestor
- is the super-class or super-interface of
descendant
.descendant
- is the sub-class or sub-interface of
ancestor
.
descendant
up to ancestor
.protected Type getGenericDeclaration(Class<?> ancestor, Class<?> descendant)
Class
-hierarchy from
descendant
up to ancestor
and returns the
sub-class or sub-interface of ancestor
on that hierarchy-path.ancestor
is an interface
, the hierarchy may NOT be unique. In such case it will be
unspecified which of the possible paths is used.
ancestor
- is the super-class or super-interface of
descendant
.descendant
- is the sub-class or sub-interface of
ancestor
.
descendant
up to ancestor
.public Class<?> getArrayClass(Class<?> componentType)
Class
reflecting an array
of the given
componentType
.
getArrayClass
in interface ReflectionUtil
componentType
- is the component type
.
array
-class.public Type toType(String type)
Class.forName(String)
for creating a
Type
instance from String
.
toType
in interface ReflectionUtil
type
- is the string representation of the requested type.
ReflectionUtil.toType(String, ClassResolver)
public Type toType(String type, ClassResolver resolver)
Class.forName(String)
for creating a
Type
instance from String
.
toType
in interface ReflectionUtil
type
- is the string representation of the requested type.resolver
- is used to resolve classes.
private Type toType(CharSequenceScanner parser, ClassResolver resolver, Type owner)
type
as generic Type
.StringParser
but we want to
avoid the dependency on util-misc
.
parser
- is the string-parser on the type string to parse.resolver
- is used to resolve classes.owner
- is the
owner-type
or null
.
public String toString(Type type)
Type
. Instead of
Type
.toString()
it returns Class.getName()
if
the type is a Class
.
toString
in interface ReflectionUtil
type
- is the type to get as string.
type
.public void toString(Type type, Appendable appendable, Visitor<Class<?>> classFormatter)
Type
. Instead of
Type
.toString()
it returns Class.getName()
if
the type is a Class
.
toString
in interface ReflectionUtil
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
.public int compare(Class<?> class1, Class<?> class2)
compare
in interface ReflectionUtil
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.public Class<?> getNonPrimitiveType(Class<?> type)
primitive
type for the class given by type
.getNonPrimitiveType
(int.class)
will return Integer.class
.
getNonPrimitiveType
in interface ReflectionUtil
type
- is the (potentially) primitive
type.
type
. This
will be the given type
itself if it is NOT
primitive
.Class.isPrimitive()
public boolean isMarkerInterface(Class<?> interfaceClass)
interfaceClass
is a
marker-interface (e.g. Serializable
or Cloneable
).
A marker-interface is also called a tagging-interface.
isMarkerInterface
in interface ReflectionUtil
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).public <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
.
getStaticField
in interface ReflectionUtil
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.public <T> T getStaticFieldOrNull(Class<?> type, String fieldName, Class<T> fieldType, boolean exactTypeMatch, boolean mustBeFinal, boolean inherit) throws IllegalArgumentException
getStaticFieldOrNull
in interface ReflectionUtil
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.public 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
.
getParentMethod
in interface ReflectionUtil
method
- is the method.
null
if no such method exists.
SecurityException
- if access has been denied by the
SecurityManager
.public 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
.
getParentMethod
in interface ReflectionUtil
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
.ReflectionUtil.getParentMethod(Class, String, Class[])
private static void visitResources(File packageDirectory, StringBuilder qualifiedNameBuilder, int qualifiedNamePrefixLength, ResourceVisitor visitor)
packageDirectory
recursively for
resources.
packageDirectory
- is the directory representing the Package
.qualifiedNameBuilder
- is a StringBuilder
containing the
qualified prefix (the Package
with a trailing dot).qualifiedNamePrefixLength
- the length of the prefix used to rest the
string-builder after reuse.visitor
- is the ResourceVisitor
.public Set<String> findClassNames(String packageName, boolean includeSubPackages)
packageName
.
findClassNames
in interface ReflectionUtil
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.public void findClassNames(String packageName, boolean includeSubPackages, Set<String> classSet)
packageName
.
findClassNames
in interface ReflectionUtil
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.public Set<String> findClassNames(String packageName, boolean includeSubPackages, Filter<String> filter)
packageName
.
findClassNames
in interface ReflectionUtil
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.public Set<String> findClassNames(String packageName, boolean includeSubPackages, Filter<String> filter, ClassLoader classLoader)
packageName
.
findClassNames
in interface ReflectionUtil
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.protected void findClassNames(String packageName, boolean includeSubPackages, Set<String> classSet, Filter<String> filter, ClassLoader classLoader) throws RuntimeIoException
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.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.
RuntimeIoException
- if the operation failed with an I/O error.findClassNames(String, boolean, Filter, ClassLoader)
public Set<String> findResourceNames(String packageName, boolean includeSubPackages, Filter<String> filter)
packageName
.
findResourceNames
in interface ReflectionUtil
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").public Set<String> findResourceNames(String packageName, boolean includeSubPackages, Filter<String> filter, ClassLoader classLoader)
packageName
.
findResourceNames
in interface ReflectionUtil
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").public Set<DataResource> findResources(String packageName, boolean includeSubPackages, Filter<String> filter)
packageName
.
findResources
in interface ReflectionUtil
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
.public 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).
findResources
in interface ReflectionUtil
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.public Set<DataResource> findResources(String packageName, boolean includeSubPackages, Filter<String> filter, ClassLoader classLoader)
packageName
.
findResources
in interface ReflectionUtil
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
.public void visitResourceNames(String packageName, boolean includeSubPackages, ClassLoader classLoader, ResourceVisitor visitor) throws RuntimeIoException
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.classLoader
- is the explicit ClassLoader
to use.visitor
- is the ResourceVisitor
.
RuntimeIoException
- if the operation failed with an I/O error.public Set<Class<?>> loadClasses(Collection<String> qualifiedClassNames)
Collection
of
fully qualified names
by
qualifiedClassNames
and returns them as Set
.
loadClasses
in interface ReflectionUtil
qualifiedClassNames
- is a collection containing the
qualified names
of the classes to load.
Set
with all loaded classes.public Set<Class<?>> loadClasses(Collection<String> qualifiedClassNames, Filter<? super Class<?>> filter)
Collection
of
fully qualified names
by
qualifiedClassNames
. It returns a Set
containing only
those loaded classes that are accepted
by the
given filter
.
loadClasses
in interface ReflectionUtil
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
.public Set<Class<?>> loadClasses(Collection<String> classNames, ClassResolver classResolver, Filter<? super Class<?>> filter)
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
.
loadClasses
in interface ReflectionUtil
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
.protected ClassLoader getDefaultClassLoader()
ClassLoader
to use. This should be the
ContextClassLoader
but falls back to
alternatives if no such ClassLoader
is available.
ClassLoader
to use.protected ClassLoader getDefaultClassLoader(Class<?> fallbackClass)
ClassLoader
to use. This should be the
ContextClassLoader
but falls back to
alternatives if no such ClassLoader
is available.
fallbackClass
- is used to retrieve
a
ClassLoader
as fallback if the
ContextClassLoader
is not
available.
ClassLoader
to use.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |