Interface MemberUtils

  • All Superinterfaces:
    Utils

    public interface MemberUtils
    extends Utils
    A utility interface for handling members (such as fields, methods, constructors) from types in the javax.lang.model package.

    Overview

    This interface provides a set of static methods to retrieve and filter members of a type, including direct members and those inherited from superclasses and interfaces. It is designed to simplify the process of working with type elements and their enclosed elements during annotation processing.

    Key Features

    Example Usage

    
     // Retrieve all declared methods from a TypeMirror
     List<ExecutableElement> methods = findDeclaredMembers(typeMirror,
         element -> element.getKind() == ElementKind.METHOD
     );
     
    
     // Retrieve all fields that start with "m_"
     List<VariableElement> filteredFields = findDeclaredMembers(typeElement,
         element -> element.getKind() == ElementKind.FIELD,
         element -> element.getSimpleName().toString().startsWith("m_")
     );
     
    Since:
    1.0.0
    Author:
    Mercy
    • Method Summary

      Static Methods 
      Modifier and Type Method Description
      static <T extends javax.lang.model.element.Element>
      java.util.List<T>
      findAllDeclaredMembers​(javax.lang.model.element.TypeElement type, java.util.function.Predicate<? super T>... memberFilters)
      Retrieves all declared members (fields, methods, constructors, etc.) from the given TypeElement, including those inherited from superclasses and implemented interfaces.
      static <T extends javax.lang.model.element.Element>
      java.util.List<T>
      findAllDeclaredMembers​(javax.lang.model.type.TypeMirror type, java.util.function.Predicate<? super T>... memberFilters)
      Returns all declared members (including those from superclasses and interfaces) of the provided TypeMirror, optionally filtered by one or more predicates.
      static <T extends javax.lang.model.element.Element>
      java.util.List<T>
      findDeclaredMembers​(javax.lang.model.element.TypeElement type, boolean all, java.util.function.Predicate<? super T>... memberFilters)
      Returns the declared members of the provided TypeElement, optionally including members from superclasses and interfaces, and filtered by one or more predicates.
      static <T extends javax.lang.model.element.Element>
      java.util.List<T>
      findDeclaredMembers​(javax.lang.model.element.TypeElement type, java.util.function.Predicate<? super T>... memberFilters)
      Returns the directly declared members of the provided TypeElement, optionally filtered by one or more predicates.
      static <T extends javax.lang.model.element.Element>
      java.util.List<T>
      findDeclaredMembers​(javax.lang.model.type.TypeMirror type, boolean includeHierarchicalTypes, java.util.function.Predicate<? super T>... memberFilters)
      Returns the declared members of the provided TypeMirror, optionally including members from superclasses and interfaces, and filtered by one or more predicates.
      static <T extends javax.lang.model.element.Element>
      java.util.List<T>
      findDeclaredMembers​(javax.lang.model.type.TypeMirror type, java.util.function.Predicate<? super T>... memberFilters)
      Returns the declared members of the provided TypeMirror, optionally filtered by one or more predicates.
      static java.util.List<? extends javax.lang.model.element.Element> getAllDeclaredMembers​(javax.lang.model.element.TypeElement type)
      Returns all declared members (including those from superclasses and interfaces) of the provided TypeElement.
      static java.util.List<? extends javax.lang.model.element.Element> getAllDeclaredMembers​(javax.lang.model.type.TypeMirror type)
      Returns all declared members (including those from superclasses and interfaces) of the provided TypeMirror.
      static java.util.List<? extends javax.lang.model.element.Element> getDeclaredMembers​(javax.lang.model.element.TypeElement type)
      Returns the directly declared members of the provided TypeElement.
      static java.util.List<? extends javax.lang.model.element.Element> getDeclaredMembers​(javax.lang.model.element.TypeElement type, boolean includeHierarchicalTypes)
      Returns the declared members of the provided TypeElement, optionally including members from superclasses and interfaces.
      static java.util.List<? extends javax.lang.model.element.Element> getDeclaredMembers​(javax.lang.model.type.TypeMirror type)
      Returns the directly declared members of the provided TypeMirror.
      static java.util.List<? extends javax.lang.model.element.Element> getDeclaredMembers​(javax.lang.model.type.TypeMirror type, boolean includeHierarchicalTypes)
      Returns the declared members of the provided TypeMirror, optionally including members from superclasses and interfaces.
    • Method Detail

      • getDeclaredMembers

        @Nonnull
        @Immutable
        static java.util.List<? extends javax.lang.model.element.Element> getDeclaredMembers​(javax.lang.model.type.TypeMirror type)
        Returns the directly declared members of the provided TypeMirror. If the given type is null, an empty list will be returned.

        Example Usage

         TypeMirror typeMirror = ...; // Obtain a valid TypeMirror instance
         List members = getDeclaredMembers(typeMirror);
         if (!members.isEmpty()) {
             for (Element member : members) {
                 System.out.println("Declared member: " + member);
             }
         }
         
        Parameters:
        type - the type mirror to retrieve declared members from
        Returns:
        a list of directly declared members, or an empty list if the type is null
      • getDeclaredMembers

        @Nonnull
        @Immutable
        static java.util.List<? extends javax.lang.model.element.Element> getDeclaredMembers​(javax.lang.model.element.TypeElement type)
        Returns the directly declared members of the provided TypeElement. If the given type is null, an empty list will be returned.

        Example Usage

        
         TypeElement typeElement = ...; // Obtain a valid TypeElement instance
         List<? extends Element> members = getDeclaredMembers(typeElement);
         if (!members.isEmpty()) {
             for (Element member : members) {
                 System.out.println("Declared member: " + member);
             }
         }
         
        Parameters:
        type - the type element to retrieve declared members from
        Returns:
        a list of directly declared members, or an empty list if the type is null
      • getAllDeclaredMembers

        @Nonnull
        @Immutable
        static java.util.List<? extends javax.lang.model.element.Element> getAllDeclaredMembers​(javax.lang.model.type.TypeMirror type)
        Returns all declared members (including those from superclasses and interfaces) of the provided TypeMirror. If the given type is null, an empty list will be returned.

        Example Usage

        
         TypeMirror typeMirror = ...; // Obtain a valid TypeMirror instance
         List<? extends Element> allMembers = getAllDeclaredMembers(typeMirror);
         if (!allMembers.isEmpty()) {
             for (Element member : allMembers) {
                 System.out.println("All declared member: " + member);
             }
         }
         
        Parameters:
        type - the type mirror to retrieve all declared members from
        Returns:
        a list of all declared members, or an empty list if the type is null
      • getAllDeclaredMembers

        @Nonnull
        @Immutable
        static java.util.List<? extends javax.lang.model.element.Element> getAllDeclaredMembers​(javax.lang.model.element.TypeElement type)
        Returns all declared members (including those from superclasses and interfaces) of the provided TypeElement. If the given type is null, an empty list will be returned.

        Example Usage

        
         TypeElement typeElement = ...; // Obtain a valid TypeElement instance
         List<? extends Element> allMembers = getAllDeclaredMembers(typeElement);
         if (!allMembers.isEmpty()) {
             for (Element member : allMembers) {
                 System.out.println("All declared member: " + member);
             }
         }
         
        Parameters:
        type - the type element to retrieve all declared members from
        Returns:
        a list of all declared members, or an empty list if the type is null
      • getDeclaredMembers

        @Nonnull
        @Immutable
        static java.util.List<? extends javax.lang.model.element.Element> getDeclaredMembers​(javax.lang.model.type.TypeMirror type,
                                                                                             boolean includeHierarchicalTypes)
        Returns the declared members of the provided TypeMirror, optionally including members from superclasses and interfaces.

        If the given type is null, an empty list will be returned.

        Example Usage

        
         TypeMirror typeMirror = ...; // Obtain a valid TypeMirror instance
         boolean includeSuperMembers = true; // Include members from superclasses/interfaces
         List<? extends Element> members = getDeclaredMembers(typeMirror, includeSuperMembers);
         for (Element member : members) {
             System.out.println("Member: " + member);
         }
         
        Parameters:
        type - the type mirror to retrieve declared members from
        includeHierarchicalTypes - whether to include members from superclasses and interfaces
        Returns:
        a list of declared members, or an empty list if the type is null
      • getDeclaredMembers

        @Nonnull
        @Immutable
        static java.util.List<? extends javax.lang.model.element.Element> getDeclaredMembers​(javax.lang.model.element.TypeElement type,
                                                                                             boolean includeHierarchicalTypes)
        Returns the declared members of the provided TypeElement, optionally including members from superclasses and interfaces.

        If the given type is null, an empty list will be returned.

        Example Usage

        
         TypeElement typeElement = ...; // Obtain a valid TypeElement instance
         boolean includeSuperMembers = true; // Include members from superclasses/interfaces
         List<? extends Element> members = getDeclaredMembers(typeElement, includeSuperMembers);
         for (Element member : members) {
             System.out.println("Member: " + member);
         }
         
        Parameters:
        type - the type element to retrieve declared members from
        includeHierarchicalTypes - whether to include members from superclasses and interfaces
        Returns:
        a list of declared members, or an empty list if the type is null
      • findDeclaredMembers

        @Nonnull
        @Immutable
        static <T extends javax.lang.model.element.Element> java.util.List<T> findDeclaredMembers​(javax.lang.model.type.TypeMirror type,
                                                                                                  java.util.function.Predicate<? super T>... memberFilters)
        Returns the declared members of the provided TypeMirror, optionally filtered by one or more predicates.

        If the given type is null, an empty list will be returned.

        Example Usage

        
         TypeMirror typeMirror = ...; // Obtain a valid TypeMirror instance
         List<ExecutableElement> methods = findDeclaredMembers(typeMirror,
             element -> element.getKind() == ElementKind.METHOD,
             element -> element.getSimpleName().toString().startsWith("get")
         );
         for (Element method : methods) {
             System.out.println("Matching method: " + method);
         }
         
        Type Parameters:
        T - the type of elements to filter
        Parameters:
        type - the type mirror to retrieve declared members from
        memberFilters - the predicates used to filter members
        Returns:
        a list of declared members matching the filters, or an empty list if the type is null
      • findDeclaredMembers

        @Nonnull
        @Immutable
        static <T extends javax.lang.model.element.Element> java.util.List<T> findDeclaredMembers​(javax.lang.model.element.TypeElement type,
                                                                                                  java.util.function.Predicate<? super T>... memberFilters)
        Returns the directly declared members of the provided TypeElement, optionally filtered by one or more predicates.

        If the given type is null, an empty list will be returned.

        Example Usage

        
         TypeElement typeElement = ...; // Obtain a valid TypeElement instance
         List<VariableElement> fields = findDeclaredMembers(typeElement,
             element -> element.getKind() == ElementKind.FIELD,
             element -> element.getSimpleName().toString().startsWith("m_")
         );
         for (Element field : fields) {
             System.out.println("Matching field: " + field);
         }
         
        Type Parameters:
        T - the type of elements to filter
        Parameters:
        type - the type element to retrieve declared members from
        memberFilters - the predicates used to filter members
        Returns:
        a list of declared members matching the filters, or an empty list if the type is null
      • findAllDeclaredMembers

        @Nonnull
        @Immutable
        static <T extends javax.lang.model.element.Element> java.util.List<T> findAllDeclaredMembers​(javax.lang.model.type.TypeMirror type,
                                                                                                     java.util.function.Predicate<? super T>... memberFilters)
        Returns all declared members (including those from superclasses and interfaces) of the provided TypeMirror, optionally filtered by one or more predicates.

        If the given type is null, an empty list will be returned.

        Example Usage

        
         TypeMirror typeMirror = ...; // Obtain a valid TypeMirror instance
         List<ExecutableElement> methods = findAllDeclaredMembers(typeMirror,
             element -> element.getKind() == ElementKind.METHOD,
             element -> element.getSimpleName().toString().startsWith("get")
         );
         for (Element method : methods) {
             System.out.println("Matching method: " + method);
         }
         
        Type Parameters:
        T - the type of elements to filter
        Parameters:
        type - the type mirror to retrieve all declared members from
        memberFilters - the predicates used to filter members
        Returns:
        a list of all declared members matching the filters, or an empty list if the type is null
      • findAllDeclaredMembers

        @Nonnull
        @Immutable
        static <T extends javax.lang.model.element.Element> java.util.List<T> findAllDeclaredMembers​(javax.lang.model.element.TypeElement type,
                                                                                                     java.util.function.Predicate<? super T>... memberFilters)
        Retrieves all declared members (fields, methods, constructors, etc.) from the given TypeElement, including those inherited from superclasses and implemented interfaces.

        This method collects all declared members by traversing the type hierarchy and applying the provided filters to narrow down the results.

        Example Usage

        
         TypeElement typeElement = ...; // Obtain a valid TypeElement instance
         List<VariableElement> fields = findAllDeclaredMembers(typeElement,
             element -> element.getKind() == ElementKind.FIELD
         );
         for (Element field : fields) {
             System.out.println("Field: " + field);
         }
         
        
         List<ExecutableElement> methods = findAllDeclaredMembers(typeElement,
             element -> element.getKind() == ElementKind.METHOD,
             element -> element.getSimpleName().toString().startsWith("get")
         );
         for (Element method : methods) {
             System.out.println("Getter method: " + method);
         }
         
        Type Parameters:
        T - the type of elements to filter
        Parameters:
        type - the type element to retrieve all declared members from
        memberFilters - the predicates used to filter members
        Returns:
        a list of all declared members matching the filters, or an empty list if the type is null
      • findDeclaredMembers

        @Nonnull
        @Immutable
        static <T extends javax.lang.model.element.Element> java.util.List<T> findDeclaredMembers​(javax.lang.model.type.TypeMirror type,
                                                                                                  boolean includeHierarchicalTypes,
                                                                                                  java.util.function.Predicate<? super T>... memberFilters)
        Returns the declared members of the provided TypeMirror, optionally including members from superclasses and interfaces, and filtered by one or more predicates.

        If the given type is null, an empty list will be returned.

        Example Usage

        
         TypeMirror typeMirror = ...; // Obtain a valid TypeMirror instance
         boolean includeSuperMembers = true; // Include members from superclasses/interfaces
         List<ExecutableElement> methods = findDeclaredMembers(typeMirror, includeSuperMembers,
             element -> element.getKind() == ElementKind.METHOD,
             element -> element.getSimpleName().toString().startsWith("get")
         );
         for (Element method : methods) {
             System.out.println("Matching method: " + method);
         }
         
        Type Parameters:
        T - the type of elements to filter
        Parameters:
        type - the type mirror to retrieve declared members from
        includeHierarchicalTypes - whether to include members from superclasses and interfaces
        memberFilters - the predicates used to filter members
        Returns:
        a list of declared members matching the filters, or an empty list if the type is null
      • findDeclaredMembers

        @Nonnull
        @Immutable
        static <T extends javax.lang.model.element.Element> java.util.List<T> findDeclaredMembers​(javax.lang.model.element.TypeElement type,
                                                                                                  boolean all,
                                                                                                  java.util.function.Predicate<? super T>... memberFilters)
        Returns the declared members of the provided TypeElement, optionally including members from superclasses and interfaces, and filtered by one or more predicates.

        If the given type is null, an empty list will be returned.

        Example Usage

        
         TypeElement typeElement = ...; // Obtain a valid TypeElement instance
         boolean includeSuperMembers = true; // Include members from superclasses/interfaces
         List<VariableElement> fields = findDeclaredMembers(typeElement, includeSuperMembers,
             element -> element.getKind() == ElementKind.FIELD,
             element -> element.getSimpleName().toString().startsWith("m_")
         );
         for (Element field : fields) {
             System.out.println("Matching field: " + field);
         }
         
        Type Parameters:
        T - the type of elements to filter
        Parameters:
        type - the type element to retrieve declared members from
        all - whether to include members from superclasses and interfaces
        memberFilters - the predicates used to filter members
        Returns:
        a list of declared members matching the filters, or an empty list if the type is null