Interface ModifierOwner

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Interface Description
      static class  ModifierOwner.Visibility
      Represents the visibility of a declaration.
    • Field Summary

      • Fields inherited from interface net.sourceforge.pmd.lang.ast.Node

        COORDS_COMPARATOR
    • Method Summary

      All Methods Instance Methods Default Methods 
      Modifier and Type Method Description
      default net.sourceforge.pmd.lang.ast.NodeStream<ASTAnnotation> getDeclaredAnnotations()
      Returns all annotations present on this node.
      default ModifierOwner.Visibility getEffectiveVisibility()
      Returns the "effective" visibility of a member.
      default @NonNull ASTModifierList getModifiers()
      Returns the node representing the modifier list of this node.
      default ModifierOwner.Visibility getVisibility()
      Returns the visibility corresponding to the effective modifiers.
      default boolean hasExplicitModifiers​(JModifier mod1, JModifier... mod)
      Returns true if this node has all the given modifiers explicitly written in the source.
      default boolean hasModifiers​(JModifier mod1, JModifier... mod)
      Returns true if this node has all the given modifiers either explicitly written or inferred through context.
      default boolean hasVisibility​(ModifierOwner.Visibility visibility)
      Returns true if this node has the given visibility either explicitly written or inferred through context.
      • Methods inherited from interface net.sourceforge.pmd.lang.ast.impl.GenericNode

        ancestors, ancestorsOrSelf, asStream, children, descendants, descendantsOrSelf, getChild, getFirstChild, getLastChild, getNextSibling, getParent, getPreviousSibling
      • Methods inherited from interface net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeNode

        getFirstToken, getLastToken, tokens
      • Methods inherited from interface net.sourceforge.pmd.lang.ast.Node

        acceptVisitor, ancestors, children, compareLocation, descendants, firstChild, getAstInfo, getBeginColumn, getBeginLine, getEndColumn, getEndLine, getImage, getIndexInParent, getLanguageVersion, getNumChildren, getReportLocation, getTextDocument, getUserMap, getXPathAttributesIterator, getXPathNodeName, hasImageEqualTo, isFindBoundary
      • Methods inherited from interface net.sourceforge.pmd.lang.ast.TextAvailableNode

        getOriginalText, getText, getTextRegion
    • Method Detail

      • getModifiers

        default @NonNull ASTModifierList getModifiers()
        Returns the node representing the modifier list of this node.
      • getVisibility

        default ModifierOwner.Visibility getVisibility()
        Returns the visibility corresponding to the effective modifiers. Eg a public method will have visibility public, a local class will have visibility local. There cannot be any conflict with hasModifiers(JModifier, JModifier...)} on well-formed code (e.g. for any n, (n.getVisibility() == V_PROTECTED) == n.hasModifiers(PROTECTED))

        TODO a public method of a private class can be considered to be private we could probably add another method later on that takes this into account

      • getEffectiveVisibility

        default ModifierOwner.Visibility getEffectiveVisibility()
        Returns the "effective" visibility of a member. This is the minimum visibility of its enclosing type declarations. For example, a public method of a private class is "effectively private".

        Local declarations keep local visibility, eg a local variable somewhere in an anonymous class doesn't get anonymous visibility.

      • hasModifiers

        default boolean hasModifiers​(JModifier mod1,
                                     JModifier... mod)
        Returns true if this node has all the given modifiers either explicitly written or inferred through context.
      • hasExplicitModifiers

        default boolean hasExplicitModifiers​(JModifier mod1,
                                             JModifier... mod)
        Returns true if this node has all the given modifiers explicitly written in the source.