Class ReflectTools

  • All Implemented Interfaces:
    Serializable

    public class ReflectTools
    extends Object
    implements Serializable
    An util class with helpers for reflection operations. Used internally by Vaadin and should not be used by application developers. Subject to change at any time.
    Since:
    6.2
    See Also:
    Serialized Form
    • Method Detail

      • findMethod

        public static Method findMethod​(Class<?> cls,
                                        String methodName,
                                        Class<?>... parameterTypes)
                                 throws ExceptionInInitializerError
        Locates the method in the given class. Returns null if the method is not found. Throws an ExceptionInInitializerError if there is a problem locating the method as this is mainly called from static blocks.
        Parameters:
        cls - Class that contains the method
        methodName - The name of the method
        parameterTypes - The parameter types for the method.
        Returns:
        A reference to the method
        Throws:
        ExceptionInInitializerError - Wraps any exception in an ExceptionInInitializerError so this method can be called from a static initializer.
      • getJavaFieldValue

        public static Object getJavaFieldValue​(Object object,
                                               Field field,
                                               Class<?> propertyType)
                                        throws IllegalArgumentException,
                                               IllegalAccessException,
                                               InvocationTargetException
        Returns the value of the java field that is assignable to the property type.

        Uses getter if a getter for the correct return type is present, otherwise tries to access even private fields directly. If the java field is not assignable to the property type throws an IllegalArgumentException.

        Parameters:
        object - The object containing the field
        field - The field we want to get the value for
        propertyType - The type the field must be assignable to
        Returns:
        The value of the field in the object
        Throws:
        InvocationTargetException - If the value could not be retrieved
        IllegalAccessException - If the value could not be retrieved
        IllegalArgumentException - If the value could not be retrieved
      • convertPrimitiveType

        public static Class<?> convertPrimitiveType​(Class<?> type)
        Since:
        7.4
      • findCommonBaseType

        public static Class<?> findCommonBaseType​(Class<?> a,
                                                  Class<?> b)
        Finds the most specific class that both provided classes extend from.
        Parameters:
        a - one class to get the base type for, not null
        b - another class to get the base type for, not null
        Returns:
        the most specific base class, not null
        Since:
        8.0
      • createInstance

        public static <T> T createInstance​(Class<T> cls)
        Creates a instance of the given class with a no-arg constructor.

        Catches all exceptions which might occur and wraps them in a IllegalArgumentException with a descriptive error message hinting of what might be wrong with the class that could not be instantiated.

        Parameters:
        cls - the class to instantiate
        Returns:
        an instance of the class
        Since:
        8.1.1
      • getMethod

        public static Method getMethod​(Class<?> listenerClass)
        Returns the first non-synthetic method of the specified listenerClass, which must have single method in the source-code. This is needed, to remove the synthetic methods added if the class is instrumented.
        Parameters:
        listenerClass - The Class of the listener, which has a single method in the source code
        Returns:
        the first non-synthetic method
        Throws:
        IllegalStateException - if the specified class does not have found method
        Since:
        8.2