Package jadex.commons

Class 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)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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.
    • Constructor Detail

      • SReflect

        public SReflect()
    • 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. Unlike Class.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. Unlike Class.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. Unlike Class.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.
      • 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.