Package jadex.commons
Class SReflect
- java.lang.Object
-
- jadex.commons.SReflect
-
public class SReflect extends java.lang.Object
This class provides several useful static reflection methods.
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.util.Map
allmethodcache
Method lookup cache (class->(name->method[])), includes non-public methods.protected static java.util.Map
basictypes
Mapping from basic class name -> basic type(class).protected static java.util.Map<Tuple2<java.lang.String,java.lang.Integer>,java.lang.Class<?>>
classcache
Class lookup cache (classloader(weak)->Map([name, import]->class)).protected static java.util.Set
convertabletypes
String convertable types.protected static java.lang.Object[]
EMPTY_ARRAY
protected static java.util.Map
fieldcache
Field lookup cache (class->(name->field[])).protected static java.lang.invoke.MethodHandle
GET_MODULE
Reflective access to Class.getModule().static boolean
HAS_GUI
This is set to true if the VM has a working GUI environment available.protected static java.util.Map
innerclassnamecache
Inner class name lookup cache.protected static java.lang.invoke.MethodHandle
IS_EXPORTED
Reflective access to Module.isExported().protected static java.lang.Boolean
isAndroid
Cached flag for android check.protected static java.lang.Boolean
isAndroidTesting
Flag set by testcases that indicates we're testing android projects in a desktop environment.protected static java.util.Map
methodcache
Method lookup cache (class->(name->method[])).protected static java.util.Map
wrappedtypes
Mapping from basic class -> object type(class).
-
Constructor Summary
Constructors Constructor Description SReflect()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.String
chooseAvailableResource(java.lang.ClassLoader cl, java.lang.String... choices)
Select the first available resource from a choice of potential resources.static java.lang.String
chooseAvailableResource(java.lang.String... choices)
Select the first available resource from a choice of potential resources.static java.lang.Class<?>
classForName(java.lang.String name, java.lang.ClassLoader classloader)
Extension for Class.forName(), because primitive types are not supported.static java.lang.Class<?>
classForName0(java.lang.String name, boolean initialize, java.lang.ClassLoader classloader)
Extension for Class.forName(), because primitive types are not supported.static java.lang.Class<?>
classForName0(java.lang.String name, java.lang.ClassLoader classloader)
Extension for Class.forName(), because primitive types are not supported.static java.lang.Object
convertWrappedValue(java.lang.Object value, java.lang.Class clazz)
Convert a value to the correct wrapped type.static java.lang.Object
createComposite(java.lang.reflect.Type type, java.util.Collection<?> values)
Create an fill an object of a class that is some kind of collection.static java.lang.String
cutPackageFromClassName(java.lang.String name)
Cut package off from classname.static java.lang.Object[]
fillArguments(java.lang.Object[] args, java.lang.Class<?>[] paramtypes)
Map arguments to parameters using varargs, if necessary.static <T> java.lang.Class<T>
findClass(java.lang.String clname, java.lang.String[] imports, java.lang.ClassLoader classloader)
Find a class.static <T> java.lang.Class<T>
findClass0(java.lang.String clname, java.lang.String[] imports, java.lang.ClassLoader classloader)
Find a class.static java.lang.reflect.Field[]
getAllFields(java.lang.Class clazz)
Get all fields of a class including public, protected and private fields of the class and its superclasses.static java.lang.reflect.Method[]
getAllMethods(java.lang.Class clazz)
Get all methods of a class including public, protected and private methods of the class and its superclasses.static java.lang.reflect.Method[]
getAllMethods(java.lang.Class<?> clazz, java.lang.String name)
Get all method(s) of the class by name, including public, protected and private methods.static java.lang.reflect.Method
getAnyMethod(java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?>[] types)
Get a method of the class.static java.lang.Object
getArray(java.lang.Object collection)
Get an array for an arbitrary collection object.static java.lang.reflect.Field
getCachedField(java.lang.Class clazz, java.lang.String name)
Get a cached field.static java.lang.Class<?>
getClass(java.lang.reflect.Type type)
Get the class for a type.static java.lang.String
getClassName(java.lang.Class<?> clazz)
Beautifies names of arrays (eg 'String[]' instead of '[LString;').static java.lang.Object
getDeclared(java.lang.Object o, java.lang.String fieldname)
Get the declared object, doesnt cumulate through superclasses.static java.lang.reflect.Method
getDeclaredMethod0(java.lang.Class<?> clazz, java.lang.String methodname, java.lang.Class<?>... parametertypes)
Gets a declared methods similar to Class.getDeclaredMethod() but returns null instead of throwing exception.static java.lang.Class<?>
getDeclaringInterface(java.lang.Class<?> iface, java.lang.String methodname, java.lang.Class<?>... parametertypes)
Finds the declaring interface of a method in a multiple-inheritance interface using a breadth-first approach.static java.lang.Object
getDefaultValue(java.lang.Class clazz)
Get default value for basic types.static java.lang.reflect.Method
getExportedMethod(java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?>... params)
Gets a method that is exported by the module.static java.lang.reflect.Field
getField(java.lang.Class clazz, java.lang.String name)
Get a field of the class, or any of it's superclasses.static java.lang.String
getGenericClassName(java.lang.reflect.Type t, java.lang.Class<?> c)
Returns generic type name.static java.lang.String
getInnerClassName(java.lang.Class<?> clazz)
Get inner class name.static java.lang.reflect.Type
getInnerGenericType(java.lang.reflect.Type type)
Unwrap a generic type.static <T> java.lang.Iterable<T>
getIterable(java.lang.Object collection)
Get an iterator for an arbitrary collection object.static java.lang.Class
getIterableComponentType(java.lang.reflect.Type type)
Get the component type of a class that is some kind of collection.static <T> java.util.Iterator<T>
getIterator(java.lang.Object collection)
Get an iterator for an arbitrary collection object.static java.lang.reflect.Method
getMethod(java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?>[] types)
Get a public method of the class.static java.lang.String
getMethodName()
Get the current method name from the caller.static java.lang.reflect.Method[]
getMethods(java.lang.Class clazz, java.lang.String name)
Get public method(s) of the class by name.static java.lang.String
getMethodSignature(java.lang.reflect.Method method)
Get the generic signature of a method.static java.lang.String
getPackageName(java.lang.Class<?> clazz)
Get the package of a class.static java.lang.Class[]
getSuperInterfaces(java.lang.Class[] interfaces)
Get the super interfaces.static java.lang.String
getTypeName(java.lang.String name)
Get unqualified type name.static java.lang.String
getUnqualifiedClassName(java.lang.Class clazz)
Get unqualified class name.static java.lang.String
getUnqualifiedTypeName(java.lang.String name)
Get unqualified type name.static java.lang.Class<?>
getWrappedType(java.lang.Class<?> clazz)
Get the wrapped type.static boolean
instanceOf(java.lang.Object o, java.lang.Class c)
Is an object instanceof a class or its superclasses.static boolean
isAndroid()
Test if running on android.static java.lang.Boolean
isAndroidTesting()
static boolean
isBasicType(java.lang.Class<?> clazz)
Is basic type.static boolean
isExported(java.lang.Class<?> clazz)
Tests if the class is part of a package that the containing module has exported.static boolean
isIterable(java.lang.Object obj)
Test if object is some kind of collection.static boolean
isIterableClass(java.lang.Class clazz)
Test if class is some kind of collection.static boolean
isStringConvertableType(java.lang.Class clazz)
Test if the class is automatically convertable from/to a string.static boolean
isSupertype(java.lang.Class<?> clazz1, java.lang.Class<?> clazz2)
Check if a class is a supertype of, or the same as another class.static void
main(java.lang.String[] args)
static java.lang.String
makeNiceArrayNotation(java.lang.String name)
Process a type name and replace array notation with nice one.static int[]
matchArgumentTypes(java.lang.Class[] argtypes, java.lang.Class[][] paramtypes)
Match the given argument types to a set of parameter type arrays.static java.lang.Object
newInstance(java.lang.String classname, java.lang.ClassLoader cl, java.lang.Object... conparams)
Reflectively instantiates an object by heuristically matching the constructor parameters.static java.lang.Object
newInstance(java.lang.String classname, java.lang.Object... conparams)
Reflectively instantiates an object by heuristically matching the constructor parameters.static void
scanDir(java.net.URL[] urls, java.io.File file, IFilter<java.lang.Object> filter, java.util.Collection<java.lang.String> results, java.util.List<java.lang.String> donedirs)
Scan directories.static void
scanDir2(java.net.URL[] urls, java.io.File file, IFilter<java.lang.Object> filter, java.util.Collection<java.lang.String> results, java.util.List<java.lang.String> donedirs)
Scan directories.static java.lang.Class<?>[]
scanForClasses(java.lang.ClassLoader classloader, IFilter filefilter, IFilter classfilter, boolean includebootpath)
Scan for classes that fulfill certain criteria as specified by the file and classfilters.static java.lang.Class<?>[]
scanForClasses(java.net.URL[] urls, java.lang.ClassLoader classloader, IFilter filefilter, IFilter classfilter)
Scan for classes that fulfill certain criteria as specified by the file and classfilters.static java.util.Set<SClassReader.ClassFileInfo>
scanForClassFileInfos(java.net.URL[] urls, IFilter<java.lang.Object> filefilter, IFilter<SClassReader.ClassFileInfo> classfilter)
Scan for component classes in the classpath.static java.util.Set<SClassReader.ClassInfo>
scanForClassInfos(java.net.URL[] urls, IFilter<java.lang.Object> filefilter, IFilter<SClassReader.ClassInfo> classfilter)
Scan for component classes in the classpath.static java.lang.String[]
scanForFiles(java.net.URL[] urls, IFilter<java.lang.Object> filter)
Scan for files in a given list of urls.static java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
scanForFiles2(java.net.URL[] urls, IFilter<java.lang.Object> filter)
Scan for files in a given list of urls.protected static void
setAndroid(boolean isAndroidFlag, boolean isAndroidTestingFlag)
private setter that can be made accessible for robolectric testcases.static java.lang.Class<?>
unwrapGenericType(java.lang.reflect.Type type)
Unwrap a generic type.static java.lang.Object
wrapValue(boolean val)
static java.lang.Object
wrapValue(byte val)
static java.lang.Object
wrapValue(char val)
static java.lang.Object
wrapValue(double val)
static java.lang.Object
wrapValue(float val)
static java.lang.Object
wrapValue(int val)
static java.lang.Object
wrapValue(long val)
static java.lang.Object
wrapValue(short val)
static java.lang.Object
wrapValue(java.lang.Object val)
-
-
-
Field Detail
-
classcache
protected static final java.util.Map<Tuple2<java.lang.String,java.lang.Integer>,java.lang.Class<?>> classcache
Class lookup cache (classloader(weak)->Map([name, import]->class)).
-
innerclassnamecache
protected static final java.util.Map innerclassnamecache
Inner class name lookup cache.
-
methodcache
protected static final java.util.Map methodcache
Method lookup cache (class->(name->method[])).
-
allmethodcache
protected static final java.util.Map allmethodcache
Method lookup cache (class->(name->method[])), includes non-public methods.
-
fieldcache
protected static final java.util.Map fieldcache
Field lookup cache (class->(name->field[])).
-
basictypes
protected static final java.util.Map basictypes
Mapping from basic class name -> basic type(class).
-
wrappedtypes
protected static final java.util.Map wrappedtypes
Mapping from basic class -> object type(class).
-
convertabletypes
protected static final java.util.Set convertabletypes
String convertable types.
-
HAS_GUI
public static final boolean HAS_GUI
This is set to true if the VM has a working GUI environment available.
-
EMPTY_ARRAY
protected static final java.lang.Object[] EMPTY_ARRAY
-
GET_MODULE
protected static final java.lang.invoke.MethodHandle GET_MODULE
Reflective access to Class.getModule().
-
IS_EXPORTED
protected static final java.lang.invoke.MethodHandle IS_EXPORTED
Reflective access to Module.isExported().
-
isAndroid
protected static volatile java.lang.Boolean isAndroid
Cached flag for android check.
-
isAndroidTesting
protected static java.lang.Boolean isAndroidTesting
Flag set by testcases that indicates we're testing android projects in a desktop environment.
-
-
Method Detail
-
getWrappedType
public static java.lang.Class<?> getWrappedType(java.lang.Class<?> clazz)
Get the wrapped type. This method converts basic types such as boolean or int to the object types Boolean, Integer.- Parameters:
clazz
- The basic class.- Returns:
- The wrapped type, return clazz when it is no basic type.
-
unwrapGenericType
public static java.lang.Class<?> unwrapGenericType(java.lang.reflect.Type type)
Unwrap a generic type.- Parameters:
type
- The generic type.- Returns:
- The unwrapped class.
-
getInnerGenericType
public static java.lang.reflect.Type getInnerGenericType(java.lang.reflect.Type type)
Unwrap a generic type.- Parameters:
type
- The generic type.- Returns:
- The unwrapped class.
-
getClass
public static java.lang.Class<?> getClass(java.lang.reflect.Type type)
Get the class for a type.
-
isStringConvertableType
public static boolean isStringConvertableType(java.lang.Class clazz)
Test if the class is automatically convertable from/to a string. Is valid for all basic types and their object pendants.- Parameters:
clazz
- The class.- Returns:
- True, if convertable.
-
isBasicType
public static boolean isBasicType(java.lang.Class<?> clazz)
Is basic type.- Returns:
- True, if the class is a basic type.
-
wrapValue
public static java.lang.Object wrapValue(boolean val)
-
wrapValue
public static java.lang.Object wrapValue(int val)
-
wrapValue
public static java.lang.Object wrapValue(long val)
-
wrapValue
public static java.lang.Object wrapValue(byte val)
-
wrapValue
public static java.lang.Object wrapValue(char val)
-
wrapValue
public static java.lang.Object wrapValue(float val)
-
wrapValue
public static java.lang.Object wrapValue(double val)
-
wrapValue
public static java.lang.Object wrapValue(short val)
-
wrapValue
public static java.lang.Object wrapValue(java.lang.Object val)
-
classForName0
public static java.lang.Class<?> classForName0(java.lang.String name, java.lang.ClassLoader classloader)
Extension for Class.forName(), because primitive types are not supported. Uses static cache to speed up lookup.- Parameters:
name
- The class name.- Returns:
- The class, or null if not found.
-
classForName0
public static java.lang.Class<?> classForName0(java.lang.String name, boolean initialize, java.lang.ClassLoader classloader)
Extension for Class.forName(), because primitive types are not supported.- Parameters:
name
- The class name.- Returns:
- The class, or null if not found.
-
classForName
public static java.lang.Class<?> classForName(java.lang.String name, java.lang.ClassLoader classloader) throws java.lang.ClassNotFoundException
Extension for Class.forName(), because primitive types are not supported. Uses static cache to speed up lookup.- Parameters:
name
- The class name.- Returns:
- The class.
- Throws:
java.lang.ClassNotFoundException
-
getClassName
public static java.lang.String getClassName(java.lang.Class<?> clazz)
Beautifies names of arrays (eg 'String[]' instead of '[LString;').- Returns:
- The beautified name of a class.
-
getGenericClassName
public static java.lang.String getGenericClassName(java.lang.reflect.Type t, java.lang.Class<?> c)
Returns generic type name.- Parameters:
t
- The type.c
- The class, used when type is variable declaration.- Returns:
- The name of the type.
-
getUnqualifiedClassName
public static java.lang.String getUnqualifiedClassName(java.lang.Class clazz)
Get unqualified class name. Also beautifies names of arrays (eg 'String[]' instead of '[LString;').- Returns:
- The unqualified (without package) name of a class.
-
getUnqualifiedTypeName
public static java.lang.String getUnqualifiedTypeName(java.lang.String name)
Get unqualified type name.- Returns:
- The unqualified (without package) name of a class.
-
getTypeName
public static java.lang.String getTypeName(java.lang.String name)
Get unqualified type name.- Returns:
- The unqualified (without package) name of a class.
-
makeNiceArrayNotation
public static java.lang.String makeNiceArrayNotation(java.lang.String name)
Process a type name and replace array notation with nice one.
-
cutPackageFromClassName
public static java.lang.String cutPackageFromClassName(java.lang.String name)
Cut package off from classname.
-
main
public static void main(java.lang.String[] args)
-
getInnerClassName
public static java.lang.String getInnerClassName(java.lang.Class<?> clazz)
Get inner class name.- Returns:
- The inner class's name (without declaring class).
-
getPackageName
public static java.lang.String getPackageName(java.lang.Class<?> clazz)
Get the package of a class.- Returns:
- The name of the package.
-
chooseAvailableResource
public static java.lang.String chooseAvailableResource(java.lang.String... choices)
Select the first available resource from a choice of potential resources. Allows, e.g. swapping alternative implementations in the classpath.
-
chooseAvailableResource
public static java.lang.String chooseAvailableResource(java.lang.ClassLoader cl, java.lang.String... choices)
Select the first available resource from a choice of potential resources. Allows, e.g. swapping alternative implementations in the classpath.
-
getMethodSignature
public static java.lang.String getMethodSignature(java.lang.reflect.Method method)
Get the generic signature of a method.- Parameters:
method
- The method.- Returns:
- The signature name.
-
getField
public static java.lang.reflect.Field getField(java.lang.Class clazz, java.lang.String name)
Get a field of the class, or any of it's superclasses. UnlikeClass.getField(String)
, this will also return nonpublic fields (except when running in netscape :-( ).- Parameters:
clazz
- The class to search.name
- The name of the field to search for.- Returns:
- The field (or null if not found).
-
getCachedField
public static java.lang.reflect.Field getCachedField(java.lang.Class clazz, java.lang.String name) throws java.lang.NoSuchFieldException
Get a cached field.- Parameters:
clazz
- The clazz.name
- The name.- Returns:
- The field.
- Throws:
java.lang.NoSuchFieldException
-
getDeclared
public static java.lang.Object getDeclared(java.lang.Object o, java.lang.String fieldname)
Get the declared object, doesnt cumulate through superclasses.- Parameters:
o
- The object.fieldname
- The name of the array.
-
getMethod
public static java.lang.reflect.Method getMethod(java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?>[] types)
Get a public method of the class. UnlikeClass.getMethod(String, Class[])
, this uses the methodcache.- Parameters:
clazz
- The class to search.name
- The name of the method to search for.types
- The parameter types.- Returns:
- The method (or null if not found).
-
getAnyMethod
public static java.lang.reflect.Method getAnyMethod(java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?>[] types)
Get a method of the class. UnlikeClass.getMethod(String, Class[])
, this uses the methodcache.- Parameters:
clazz
- The class to search.name
- The name of the method to search for.types
- The parameter types.- Returns:
- The method (or null if not found).
-
getMethods
public static java.lang.reflect.Method[] getMethods(java.lang.Class clazz, java.lang.String name)
Get public method(s) of the class by name.- Parameters:
clazz
- The class to search.name
- The name of the method to search for.- Returns:
- The method(s).
-
getAllMethods
public static java.lang.reflect.Method[] getAllMethods(java.lang.Class<?> clazz, java.lang.String name)
Get all method(s) of the class by name, including public, protected and private methods.- Parameters:
clazz
- The class to search.name
- The name of the method to search for.- Returns:
- The method(s).
-
getAllMethods
public static java.lang.reflect.Method[] getAllMethods(java.lang.Class clazz)
Get all methods of a class including public, protected and private methods of the class and its superclasses.- Returns:
- Array of all methods starting from the current class upwards towards Object.class.
-
getDeclaredMethod0
public static final java.lang.reflect.Method getDeclaredMethod0(java.lang.Class<?> clazz, java.lang.String methodname, java.lang.Class<?>... parametertypes)
Gets a declared methods similar to Class.getDeclaredMethod() but returns null instead of throwing exception.- Parameters:
clazz
- The class being operated on.methodname
- Name of the method.parametertypes
- The parameter types.- Returns:
- Method, if declared method is found in the class, null otherwise.
-
getDeclaringInterface
public static final java.lang.Class<?> getDeclaringInterface(java.lang.Class<?> iface, java.lang.String methodname, java.lang.Class<?>... parametertypes)
Finds the declaring interface of a method in a multiple-inheritance interface using a breadth-first approach.- Parameters:
iface
- The starting interface.methodname
- The method name.parametertypes
- The method parameter types.- Returns:
- The declaring interface or null if none is found.
-
getAllFields
public static java.lang.reflect.Field[] getAllFields(java.lang.Class clazz)
Get all fields of a class including public, protected and private fields of the class and its superclasses.- Returns:
- Array of all fields starting from the current class upwards towards Object.class.
-
findClass
public static <T> java.lang.Class<T> findClass(java.lang.String clname, java.lang.String[] imports, java.lang.ClassLoader classloader) throws java.lang.ClassNotFoundException
Find a class. When the class name is not fully qualified, the list of imported packages is searched for the class.- Parameters:
clname
- The class name.imports
- The comma separated list of imported packages.- Throws:
java.lang.ClassNotFoundException
- when the class is not found in the imports.
-
findClass0
public static <T> java.lang.Class<T> findClass0(java.lang.String clname, java.lang.String[] imports, java.lang.ClassLoader classloader)
Find a class. Also supports basic types and arrays. When the class name is not fully qualified, the list of imported packages is searched for the class.- Parameters:
clname
- The class name.imports
- The comma separated list of imported packages.- Returns:
- null, when the class is not found in the imports.
-
newInstance
public static final java.lang.Object newInstance(java.lang.String classname, java.lang.Object... conparams)
Reflectively instantiates an object by heuristically matching the constructor parameters.- Parameters:
classname
- Name of the object class.conparams
- Constructor parameters.- Returns:
- Instantiated object.
-
newInstance
public static final java.lang.Object newInstance(java.lang.String classname, java.lang.ClassLoader cl, java.lang.Object... conparams)
Reflectively instantiates an object by heuristically matching the constructor parameters.- Parameters:
classname
- Name of the object class.cl
- The classloader to find the class.conparams
- Constructor parameters.- Returns:
- Instantiated object.
-
matchArgumentTypes
public static int[] matchArgumentTypes(java.lang.Class[] argtypes, java.lang.Class[][] paramtypes)
Match the given argument types to a set of parameter type arrays. The argument type array may contain null values, when an argument type is unknown. For convenience, the length of a parameter type array does not have to equal the argument array length. (although it will of course never match). The method returns the indices of the matching parameter type arrays. An empty array is returned, if no match is found. The returned matches are sorted by quality (best match first).- Parameters:
argtypes
- The array of argument types.paramtypes
- The array of parameter type arrays.- Returns:
- The indices of the matching parameter type arrays.
-
fillArguments
public static java.lang.Object[] fillArguments(java.lang.Object[] args, java.lang.Class<?>[] paramtypes)
Map arguments to parameters using varargs, if necessary.
-
isSupertype
public static boolean isSupertype(java.lang.Class<?> clazz1, java.lang.Class<?> clazz2)
Check if a class is a supertype of, or the same as another class. Maps basic types to wrapped types, and respects the basic type hierarchy.- Parameters:
clazz1
- The assumed supertype.clazz2
- The assumed subtype.- Returns:
- True, if clazz1 is a supertype of, or the same as clazz2.
-
convertWrappedValue
public static java.lang.Object convertWrappedValue(java.lang.Object value, java.lang.Class clazz)
Convert a value to the correct wrapped type. Assumes that the conversion is possible.- Parameters:
value
- The value.clazz
- The target clazz.- Returns:
- The converted value.
- See Also:
isSupertype(Class, Class)
-
getIterable
public static <T> java.lang.Iterable<T> getIterable(java.lang.Object collection)
Get an iterator for an arbitrary collection object. Supports iterators, enumerations, java.util.Collections, java.util.Maps, arrays. Null is converted to empty iterator.- Parameters:
collection
- The collection object.- Returns:
- An iterator over the collection.
- Throws:
java.lang.IllegalArgumentException
- when argument is not one of (Iterator, Enumeration, Collection, Map, Array).
-
getIterator
public static <T> java.util.Iterator<T> getIterator(java.lang.Object collection)
Get an iterator for an arbitrary collection object. Supports iterators, enumerations, java.util.Collections, java.util.Maps, arrays. Null is converted to empty iterator.- Parameters:
collection
- The collection object.- Returns:
- An iterator over the collection.
- Throws:
java.lang.IllegalArgumentException
- when argument is not one of (Iterator, Enumeration, Collection, Map, Array).
-
isIterable
public static boolean isIterable(java.lang.Object obj)
Test if object is some kind of collection.- Parameters:
obj
- The object.- Returns:
- True if is iterable.
-
isIterableClass
public static boolean isIterableClass(java.lang.Class clazz)
Test if class is some kind of collection.- Parameters:
clazz
- The class.- Returns:
- True if is iterable.
-
getIterableComponentType
public static java.lang.Class getIterableComponentType(java.lang.reflect.Type type)
Get the component type of a class that is some kind of collection.- Parameters:
clazz
- The class.- Returns:
- The component type, i.e. type of contained elements as defined in collection class.
-
createComposite
public static java.lang.Object createComposite(java.lang.reflect.Type type, java.util.Collection<?> values)
Create an fill an object of a class that is some kind of collection.- Parameters:
clazz
- The class.values
- The values.
-
getArray
public static java.lang.Object getArray(java.lang.Object collection)
Get an array for an arbitrary collection object. Supports iterators, enumerations, java.util.Collections, java.util.Maps, arrays. Null is converted to empty array.- Parameters:
collection
- The collection object.- Returns:
- An array over the collection.
- Throws:
java.lang.IllegalArgumentException
- when argument is not one of (Iterator, Enumeration, Collection, Map, Array).
-
instanceOf
public static boolean instanceOf(java.lang.Object o, java.lang.Class c)
Is an object instanceof a class or its superclasses.- Parameters:
o
- The object.c
- The class.- Returns:
- True, when o is instance of class c.
-
getSuperInterfaces
public static java.lang.Class[] getSuperInterfaces(java.lang.Class[] interfaces)
Get the super interfaces.- Parameters:
interfaces
- The interfaces- Returns:
- All super interfaces.
-
getDefaultValue
public static java.lang.Object getDefaultValue(java.lang.Class clazz)
Get default value for basic types.
-
getExportedMethod
public static final java.lang.reflect.Method getExportedMethod(java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?>... params)
Gets a method that is exported by the module.- Parameters:
clazz
- Class with the method.name
- Name of the method.params
- Method parameters.- Returns:
- The method or null if not found.
-
isExported
public static final boolean isExported(java.lang.Class<?> clazz)
Tests if the class is part of a package that the containing module has exported.- Parameters:
clazz
- The class.- Returns:
- True, if exported.
-
getMethodName
public static java.lang.String getMethodName()
Get the current method name from the caller.- Returns:
- The method name.
-
scanForClasses
public static java.lang.Class<?>[] scanForClasses(java.lang.ClassLoader classloader, IFilter filefilter, IFilter classfilter, boolean includebootpath)
Scan for classes that fulfill certain criteria as specified by the file and classfilters.
-
scanForClasses
public static java.lang.Class<?>[] scanForClasses(java.net.URL[] urls, java.lang.ClassLoader classloader, IFilter filefilter, IFilter classfilter)
Scan for classes that fulfill certain criteria as specified by the file and classfilters.
-
scanForFiles
public static java.lang.String[] scanForFiles(java.net.URL[] urls, IFilter<java.lang.Object> filter)
Scan for files in a given list of urls.
-
scanForClassInfos
public static java.util.Set<SClassReader.ClassInfo> scanForClassInfos(java.net.URL[] urls, IFilter<java.lang.Object> filefilter, IFilter<SClassReader.ClassInfo> classfilter)
Scan for component classes in the classpath.
-
scanForClassFileInfos
public static java.util.Set<SClassReader.ClassFileInfo> scanForClassFileInfos(java.net.URL[] urls, IFilter<java.lang.Object> filefilter, IFilter<SClassReader.ClassFileInfo> classfilter)
Scan for component classes in the classpath.
-
scanForFiles2
public static java.util.Map<java.lang.String,java.util.Set<java.lang.String>> scanForFiles2(java.net.URL[] urls, IFilter<java.lang.Object> filter)
Scan for files in a given list of urls.
-
scanDir
public static void scanDir(java.net.URL[] urls, java.io.File file, IFilter<java.lang.Object> filter, java.util.Collection<java.lang.String> results, java.util.List<java.lang.String> donedirs)
Scan directories.
-
scanDir2
public static void scanDir2(java.net.URL[] urls, java.io.File file, IFilter<java.lang.Object> filter, java.util.Collection<java.lang.String> results, java.util.List<java.lang.String> donedirs)
Scan directories.
-
setAndroid
protected static void setAndroid(boolean isAndroidFlag, boolean isAndroidTestingFlag)
private setter that can be made accessible for robolectric testcases.
-
isAndroidTesting
public static java.lang.Boolean isAndroidTesting()
-
isAndroid
public static boolean isAndroid()
Test if running on android.
-
-