Interface ElementUtils

  • All Superinterfaces:
    Utils

    public interface ElementUtils
    extends Utils
    The utility class for Element
    Since:
    1.0.0
    Author:
    Mercy
    See Also:
    Element, Enum
    • Method Summary

      Static Methods 
      Modifier and Type Method Description
      static <E extends javax.lang.model.element.Element>
      java.util.List<E>
      filterElements​(java.util.List<E> elements, java.util.function.Predicate<? super E>... elementPredicates)
      Filters the provided list of Element objects based on the given array of Predicate conditions.
      static boolean hasModifiers​(javax.lang.model.element.Element member, javax.lang.model.element.Modifier... modifiers)
      Checks whether the specified Element has all of the specified Modifiers.
      static boolean isClass​(javax.lang.model.element.ElementKind kind)
      Returns true if this is a kind of class: either CLASS or ENUM or RECORD.
      static boolean isDeclaredType​(javax.lang.model.element.ElementKind kind)
      {@return {@code true} if this is a kind of declared type, a {@linkplain ElementKind#isClass() class} or an {@linkplain ElementKind#isInterface() interface}, and {@code false} otherwise}
      static boolean isExecutable​(javax.lang.model.element.ElementKind kind)
      Returns true if this is a kind of executable: either METHOD or CONSTRUCTOR or STATIC_INIT or INSTANCE_INIT.
      static boolean isField​(javax.lang.model.element.ElementKind kind)
      Returns true if this is a kind of field: either FIELD or ENUM_CONSTANT.
      static boolean isInitializer​(javax.lang.model.element.ElementKind kind)
      Returns true if this is a kind of initializer: either STATIC_INIT or INSTANCE_INIT.
      static boolean isInterface​(javax.lang.model.element.ElementKind kind)
      Returns true if this is a kind of interface: either INTERFACE or ANNOTATION_TYPE.
      static boolean isMember​(javax.lang.model.element.ElementKind kind)
      {@return {@code true} if this is a kind of {@linkplain ElementKind#isField() field} or {@linkplain ElementKind#isExecutable() executable}, and {@code false} otherwise}
      static boolean isPublicNonStatic​(javax.lang.model.element.Element member)
      Checks whether the specified Element is public and non-static.
      static boolean isVariable​(javax.lang.model.element.ElementKind kind)
      Returns true if this is a kind of variable: including ENUM_CONSTANT, FIELD, PARAMETER, LOCAL_VARIABLE, EXCEPTION_PARAMETER, RESOURCE_VARIABLE, and BINDING_VARIABLE.
      static boolean matchesElementKind​(javax.lang.model.element.Element member, javax.lang.model.element.ElementKind kind)
      Checks whether the specified Element has the specified ElementKind.
      static boolean matchesElementType​(javax.lang.model.element.ElementKind elementKind, java.lang.annotation.ElementType elementType)
      Checks whether the specified ElementKind matches the specified ElementType.
      static boolean matchesElementType​(javax.lang.model.element.ElementKind elementKind, java.lang.annotation.ElementType... elementTypes)
      Checks whether the specified ElementKind matches any of the specified ElementTypes.
      static boolean matchesElementType​(javax.lang.model.element.Element element, java.lang.annotation.ElementType... elementTypes)
      Checks whether the specified Element matches the specified ElementType.
      static boolean matchParameterTypeNames​(java.util.List<? extends javax.lang.model.element.VariableElement> parameters, java.lang.CharSequence... parameterTypeNames)
      Checks whether the parameter types of the given list of VariableElement parameters match the specified type names.
      static boolean matchParameterTypes​(java.util.List<? extends javax.lang.model.element.VariableElement> parameters, java.lang.reflect.Type... parameterTypes)
      Checks whether the parameter types of the given list of VariableElement parameters match the specified types.
      static boolean matchParameterTypes​(javax.lang.model.element.ExecutableElement executableElement, java.lang.reflect.Type... parameterTypes)
      Checks whether the parameter types of the given ExecutableElement match the specified types.
      static javax.lang.model.element.ElementKind toElementKind​(java.lang.annotation.ElementType elementType)
      Converts the specified ElementType to an equivalent ElementKind.
    • Method Detail

      • isClass

        static boolean isClass​(javax.lang.model.element.ElementKind kind)
        Returns true if this is a kind of class: either CLASS or ENUM or RECORD.
        Returns:
        true if this is a kind of class
        See Also:
        ElementKind.isClass()
      • isInterface

        static boolean isInterface​(javax.lang.model.element.ElementKind kind)
        Returns true if this is a kind of interface: either INTERFACE or ANNOTATION_TYPE.
        Parameters:
        kind - ElementKind
        Returns:
        true if this is a kind of interface
      • isDeclaredType

        static boolean isDeclaredType​(javax.lang.model.element.ElementKind kind)
        {@return {@code true} if this is a kind of declared type, a {@linkplain ElementKind#isClass() class} or an {@linkplain ElementKind#isInterface() interface}, and {@code false} otherwise}
        Parameters:
        kind - ElementKind
        See Also:
        ElementKind#isDeclaredType()
      • isField

        static boolean isField​(javax.lang.model.element.ElementKind kind)
        Returns true if this is a kind of field: either FIELD or ENUM_CONSTANT.
        Parameters:
        kind - ElementKind
        Returns:
        true if this is a kind of field
        See Also:
        ElementKind.isField()
      • isExecutable

        static boolean isExecutable​(javax.lang.model.element.ElementKind kind)
        Returns true if this is a kind of executable: either METHOD or CONSTRUCTOR or STATIC_INIT or INSTANCE_INIT.
        Parameters:
        kind - ElementKind
        Returns:
        true if this is a kind of executable
        See Also:
        ElementKind#isExecutable()
      • isMember

        static boolean isMember​(javax.lang.model.element.ElementKind kind)
        {@return {@code true} if this is a kind of {@linkplain ElementKind#isField() field} or {@linkplain ElementKind#isExecutable() executable}, and {@code false} otherwise}
        Parameters:
        kind - ElementKind
        kind -
        Returns:
        See Also:
        ElementKind#isDeclaredType()
      • isInitializer

        static boolean isInitializer​(javax.lang.model.element.ElementKind kind)
        Returns true if this is a kind of initializer: either STATIC_INIT or INSTANCE_INIT.
        Parameters:
        kind - ElementKind
        Returns:
        true if this is a kind of initializer
        See Also:
        ElementKind#isInitializer()
      • isVariable

        static boolean isVariable​(javax.lang.model.element.ElementKind kind)
        Returns true if this is a kind of variable: including ENUM_CONSTANT, FIELD, PARAMETER, LOCAL_VARIABLE, EXCEPTION_PARAMETER, RESOURCE_VARIABLE, and BINDING_VARIABLE.
        Parameters:
        kind - ElementKind
        Returns:
        true if this is a kind of variable
        See Also:
        ElementKind#isVariable()
      • toElementKind

        static javax.lang.model.element.ElementKind toElementKind​(java.lang.annotation.ElementType elementType)
        Converts the specified ElementType to an equivalent ElementKind.

        If the provided elementType is null, this method returns ElementKind.OTHER.

        Parameters:
        elementType - the ElementType to convert, may be null
        Returns:
        the corresponding ElementKind, never null
      • matchesElementType

        static boolean matchesElementType​(javax.lang.model.element.ElementKind elementKind,
                                          java.lang.annotation.ElementType elementType)
        Checks whether the specified ElementKind matches the specified ElementType.
        Parameters:
        elementKind - the ElementKind to check
        elementType - the ElementType to check
        Returns:
        true if the ElementKind matches the ElementType, false otherwise
      • matchesElementType

        static boolean matchesElementType​(javax.lang.model.element.ElementKind elementKind,
                                          java.lang.annotation.ElementType... elementTypes)
        Checks whether the specified ElementKind matches any of the specified ElementTypes.
        Parameters:
        elementKind - the ElementKind to check
        elementTypes - the ElementTypes to check
        Returns:
        true if the ElementKind matches any of the ElementTypes, false otherwise
      • matchesElementType

        static boolean matchesElementType​(javax.lang.model.element.Element element,
                                          java.lang.annotation.ElementType... elementTypes)
        Checks whether the specified Element matches the specified ElementType.
        Parameters:
        element - the Element to check
        elementTypes - the ElementTypes to check
        Returns:
        true if the Element matches the ElementType, false otherwise
      • matchesElementKind

        static boolean matchesElementKind​(javax.lang.model.element.Element member,
                                          javax.lang.model.element.ElementKind kind)
        Checks whether the specified Element has the specified ElementKind.
        Parameters:
        member - the Element to check, may be null
        kind - the ElementKind to match, may be null
        Returns:
        true if the element is not null and its kind matches the specified kind; otherwise, false
      • isPublicNonStatic

        static boolean isPublicNonStatic​(javax.lang.model.element.Element member)
        Checks whether the specified Element is public and non-static.
        Parameters:
        member - the Element to check, may be null
        Returns:
        true if the element is public and not static; otherwise, false
      • hasModifiers

        static boolean hasModifiers​(javax.lang.model.element.Element member,
                                    javax.lang.model.element.Modifier... modifiers)
        Checks whether the specified Element has all of the specified Modifiers.
        Parameters:
        member - the Element to check, may be null
        modifiers - the array of Modifiers to match, may be null
        Returns:
        true if the element is not null and contains all specified modifiers; otherwise, false
      • filterElements

        static <E extends javax.lang.model.element.Element> java.util.List<E> filterElements​(java.util.List<E> elements,
                                                                                             java.util.function.Predicate<? super E>... elementPredicates)
        Filters the provided list of Element objects based on the given array of Predicate conditions.

        If the input list of elements is empty or the array of predicates is null, an empty list is returned.

        Type Parameters:
        E - The type of the elements, which must be a subclass of Element
        Parameters:
        elements - The list of elements to be filtered, may be null
        elementPredicates - An array of predicates used to filter the elements, may be null
        Returns:
        A filtered list of elements that match all the provided predicates. Returns an empty list if no elements match, or if the input list or predicate array is invalid.
      • matchParameterTypes

        static boolean matchParameterTypes​(javax.lang.model.element.ExecutableElement executableElement,
                                           java.lang.reflect.Type... parameterTypes)
        Checks whether the parameter types of the given ExecutableElement match the specified types.

        If either the executable element or the parameter types array is null, this method returns false. Otherwise, it compares the fully qualified type names of the parameters.

        Parameters:
        executableElement - the executable element whose parameters are to be checked, may be null
        parameterTypes - the expected parameter types, may be null
        Returns:
        true if the parameter types match; false otherwise
      • matchParameterTypes

        static boolean matchParameterTypes​(java.util.List<? extends javax.lang.model.element.VariableElement> parameters,
                                           java.lang.reflect.Type... parameterTypes)
        Checks whether the parameter types of the given list of VariableElement parameters match the specified types.

        If either the parameters list or the parameter types array is null, this method returns false. Otherwise, it compares the fully qualified type names of the parameters.

        Parameters:
        parameters - the list of variable elements representing the parameters, may be null
        parameterTypes - the expected parameter types, may be null
        Returns:
        true if the parameter types match; false otherwise
      • matchParameterTypeNames

        static boolean matchParameterTypeNames​(java.util.List<? extends javax.lang.model.element.VariableElement> parameters,
                                               java.lang.CharSequence... parameterTypeNames)
        Checks whether the parameter types of the given list of VariableElement parameters match the specified type names.

        If either the parameters list or the parameter type names array is null, this method returns false. It also returns false if the sizes of the two arrays do not match. Otherwise, it compares each parameter's type with the corresponding type name using TypeUtils.isSameType(Element, CharSequence).

        Parameters:
        parameters - the list of variable elements representing the parameters, may be null
        parameterTypeNames - the expected fully qualified type names of the parameters, may be null
        Returns:
        true if all parameter types match their corresponding type names; false otherwise