Class Reflections


  • public class Reflections
    extends Object
    Utility class for static reflection-type operations
    Author:
    Pete Muir, Ales Justin, Marko Luksa
    • Field Detail

      • EMPTY_TYPES

        public static final Type[] EMPTY_TYPES
      • EMPTY_ANNOTATIONS

        public static final Annotation[] EMPTY_ANNOTATIONS
      • EMPTY_CLASSES

        public static final Class<?>[] EMPTY_CLASSES
    • Method Detail

      • isCacheable

        public static boolean isCacheable​(Annotation[] annotations)
      • cast

        public static <T> T cast​(Object obj)
      • getPropertyName

        public static String getPropertyName​(Method method)
        Gets the property name from a getter method.

        We extend JavaBean conventions, allowing the getter method to have parameters

        Parameters:
        method - The getter method
        Returns:
        The name of the property. Returns null if method wasn't JavaBean getter-styled
      • isFinal

        public static boolean isFinal​(Class<?> clazz)
        Checks if class is final
        Parameters:
        clazz - The class to check
        Returns:
        True if final, false otherwise
      • getNesting

        public static int getNesting​(Class<?> clazz)
      • isFinal

        public static boolean isFinal​(Member member)
        Checks if member is final
        Parameters:
        member - The member to check
        Returns:
        True if final, false otherwise
      • isPrivate

        public static boolean isPrivate​(Member member)
        Checks if member is private
        Parameters:
        member - The member to check
        Returns:
        True if final, false otherwise
      • isTypeOrAnyMethodFinal

        public static boolean isTypeOrAnyMethodFinal​(Class<?> type)
        Checks if type or member is final
        Parameters:
        type - Type or member
        Returns:
        True if final, false otherwise
      • getNonPrivateNonStaticFinalMethod

        public static Method getNonPrivateNonStaticFinalMethod​(Class<?> type)
      • isPackagePrivate

        public static boolean isPackagePrivate​(int mod)
      • isStatic

        public static boolean isStatic​(Class<?> type)
        Checks if type is static
        Parameters:
        type - Type to check
        Returns:
        True if static, false otherwise
      • isStatic

        public static boolean isStatic​(Member member)
        Checks if member is static
        Parameters:
        member - Member to check
        Returns:
        True if static, false otherwise
      • isTransient

        public static boolean isTransient​(Member member)
      • isAbstract

        public static boolean isAbstract​(Method method)
        Checks if a method is abstract
        Parameters:
        method - the method
        Returns:
        true if abstract
      • isAbstract

        public static boolean isAbstract​(Class<?> clazz)
      • getActualTypeArguments

        public static Type[] getActualTypeArguments​(Class<?> clazz)
        Gets the actual type arguments of a class
        Parameters:
        clazz - The class to examine
        Returns:
        The type arguments
      • getActualTypeArguments

        public static Type[] getActualTypeArguments​(Type type)
        Gets the actual type arguments of a Type
        Parameters:
        type - The type to examine
        Returns:
        The type arguments
      • isArrayType

        public static boolean isArrayType​(Class<?> rawType)
        Checks if raw type is array type
        Parameters:
        rawType - The raw type to check
        Returns:
        True if array, false otherwise
      • isParameterizedType

        public static boolean isParameterizedType​(Class<?> type)
        Checks if type is parameterized type
        Parameters:
        type - The type to check
        Returns:
        True if parameterized, false otherwise
      • isParameterizedTypeWithWildcard

        public static boolean isParameterizedTypeWithWildcard​(Class<?> type)
      • containsWildcards

        public static boolean containsWildcards​(Type[] types)
      • isSerializable

        public static boolean isSerializable​(Class<?> clazz)
      • isPrimitive

        public static boolean isPrimitive​(Type type)
      • getRawType

        public static <T> Class<T> getRawType​(Type type)
      • isClassLoadable

        public static boolean isClassLoadable​(String className,
                                              org.jboss.weld.resources.spi.ResourceLoader resourceLoader)
      • loadClass

        public static <T> Class<T> loadClass​(String className,
                                             org.jboss.weld.resources.spi.ResourceLoader resourceLoader)
        Tries to load a class using the specified ResourceLoader. Returns null if the class is not found.
        Parameters:
        className -
        resourceLoader -
        Returns:
        the loaded class or null if the given class cannot be loaded
      • isUnboundedWildcard

        public static boolean isUnboundedWildcard​(Type type)
      • isUnboundedTypeVariable

        public static boolean isUnboundedTypeVariable​(Type type)
      • isStaticNestedClass

        public static boolean isStaticNestedClass​(Class<?> javaClass)
        Parameters:
        javaClass -
        Returns:
        true if the given class is a static nested class, false otherwise
      • isTopLevelOrStaticNestedClass

        public static boolean isTopLevelOrStaticNestedClass​(Class<?> javaClass)
        Parameters:
        javaClass -
        Returns:
        true if the given class is a top-level or static nested class, false otherwise
      • invokeAndUnwrap

        public static <T> T invokeAndUnwrap​(Object instance,
                                            Method method,
                                            Object... parameters)
                                     throws Throwable
        Invokes the method on a given instance passing in given parameters. If the invocation yields InvocationTargetException, the exception is unwrapped. It is a responsibility of the caller to make sure that the method is accessible to the caller.
        Throws:
        Throwable
      • checkDeclaringClassLoadable

        public static void checkDeclaringClassLoadable​(Class<?> c)
        Triggers loading of declaring class (if any) of the given class recursively. If the class cannot be loaded, the underlying LinkageError is propagated.
        Parameters:
        class - the given class
        Throws:
        LinkageError - or its subclass if a declaring class cannot be loaded
      • findDeclaredMethodByName

        public static Method findDeclaredMethodByName​(Class<?> clazz,
                                                      String methodName)
        Searches for a declared method with a given name. If the class declares multiple methods with the given name, there is no guarantee as of which methods is returned. Null is returned if the class does not declare a method with the given name.
        Parameters:
        clazz - the given class
        methodName - the given method name
        Returns:
        method method with the given name declared by the given class or null if no such method exists
      • getInterfaceClosure

        public static Set<Class<?>> getInterfaceClosure​(Class<?> clazz)
      • isDefault

        public static boolean isDefault​(Method method)
      • decapitalize

        public static String decapitalize​(String name)
        Copy of java.beans.Introspector#decapitalize(name) to reduce java.desktop module dependency. Utility method to take a string and convert it to normal Java variable name capitalization. This normally means converting the first character from upper case to lower case, but in the (unusual) special case when there is more than one character and both the first and second characters are upper case, we leave it alone.

        Thus "FooBah" becomes "fooBah" and "X" becomes "x", but "URL" stays as "URL".

        Parameters:
        name - The string to be decapitalized.
        Returns:
        The decapitalized version of the string.