# Class AbstractTagElement

java.lang.Object
org.eclipse.jdt.core.dom.ASTNode
org.eclipse.jdt.core.dom.AbstractTagElement

All Implemented Interfaces:
  `IDocElement`

Direct Known Subclasses:
  `JavaDocRegion, TagElement`

public abstract class AbstractTagElement extends ASTNode implements IDocElement
AST node for a tag within a doc comment. Tag elements nested within another tag element are called inline doc tags.

    TagElement:
        [ @ Identifier ] { DocElement }
        {tagProperty = tagValue}
    DocElement:
        TextElement
        Name
        MethodRef
        MemberRef
        { TagElement }

Since:
  3.30
See Also:
  - `Javadoc`

## Field Summary

### Fields inherited from class ASTNode

`ANNOTATION_TYPE_DECLARATION, ANNOTATION_TYPE_MEMBER_DECLARATION, ANONYMOUS_CLASS_DECLARATION, ARRAY_ACCESS, ARRAY_CREATION, ARRAY_INITIALIZER, ARRAY_TYPE, ASSERT_STATEMENT, ASSIGNMENT, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CASE_DEFAULT_EXPRESSION, CAST_EXPRESSION, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, COMPILATION_UNIT, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, CREATION_REFERENCE, DIMENSION, DO_STATEMENT, EitherOr_MultiPattern, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENUM_CONSTANT_DECLARATION, ENUM_DECLARATION, EXPORTS_DIRECTIVE, EXPRESSION_METHOD_REFERENCE, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_STATEMENT, GUARDED_PATTERN, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, INTERSECTION_TYPE, JAVADOC, JAVADOC_REGION, JAVADOC_TEXT_ELEMENT, LABELED_STATEMENT, LAMBDA_EXPRESSION, LINE_COMMENT, MALFORMED, MARKER_ANNOTATION, MEMBER_REF, MEMBER_VALUE_PAIR, METHOD_DECLARATION, METHOD_INVOCATION, METHOD_REF, METHOD_REF_PARAMETER, MODIFIER, MODULE_DECLARATION, MODULE_MODIFIER, MODULE_QUALIFIED_NAME, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NULL_PATTERN, NUMBER_LITERAL, OPENS_DIRECTIVE, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, PATTERN_INSTANCEOF_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, PROVIDES_DIRECTIVE, QUALIFIED_NAME, QUALIFIED_TYPE, RECORD_DECLARATION, RECORD_PATTERN, RECOVERED, REQUIRES_DIRECTIVE, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_MEMBER_ANNOTATION, SINGLE_VARIABLE_DECLARATION, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SUPER_METHOD_REFERENCE, SWITCH_CASE, SWITCH_EXPRESSION, SWITCH_STATEMENT, SYNCHRONIZED_STATEMENT, TAG_ELEMENT, TAG_PROPERTY, TEXT_BLOCK, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_METHOD_REFERENCE, TYPE_PARAMETER, TYPE_PATTERN, UNION_TYPE, UNNAMED_CLASS, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, YIELD_STATEMENT`

## Method Summary

Modifier and Type
Method
Description
`List`
`fragments()`
Returns the live list of fragments in this tag element.
`String`
`getTagName()`
Returns this node's tag name, or `null` if none.
`final SimplePropertyDescriptor`
`getTagNameProperty()`
Returns structural property descriptor for the "name" property of this node (child type: `SimpleName`).
`static final SimplePropertyDescriptor`
`internalTagNamePropertyFactory(Class nodeClass)`
The "tagName" structural property of this node type (type: `String`).
`boolean`
`isNested()`
Returns whether this tag element is nested within another tag element.
`void`
`setTagName(String tagName)`
Sets the tag name of this node to the given value.

### Methods inherited from class ASTNode

`accept, copySubtree, copySubtrees, delete, equals, getAST, getFlags, getLength, getLocationInParent, getNodeType, getParent, getProperty, getRoot, getStartPosition, getStructuralProperty, hashCode, nodeClassForType, properties, setFlags, setProperty, setSourceRange, setStructuralProperty, structuralPropertiesForType, subtreeBytes, subtreeMatch, toString`

### Methods inherited from class Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Method Details

### internalTagNamePropertyFactory

public static final SimplePropertyDescriptor internalTagNamePropertyFactory(Class nodeClass)
The "tagName" structural property of this node type (type: `String`).

Since:
  3.30

### getTagNameProperty

public final SimplePropertyDescriptor getTagNameProperty()
Returns structural property descriptor for the "name" property of this node (child type: `SimpleName`).

Returns:
  the property descriptor
Since:
  3.1

### getTagName

public String getTagName()
Returns this node's tag name, or `null` if none. For top level doc tags such as parameter tags, the tag name includes the "@" character ("@param"). For inline doc tags such as link tags, the tag name includes the "@" character ("@link"). The tag name may also be `null`; this is used to represent the material at the start of a doc comment preceding the first explicit tag.

Returns:
  the tag name, or `null` if none

### setTagName

public void setTagName(String tagName)
Sets the tag name of this node to the given value. For top level doc tags such as parameter tags, the tag name includes the "@" character ("@param"). For inline doc tags such as link tags, the tag name includes the "@" character ("@link"). The tag name may also be `null`; this is used to represent the material at the start of a doc comment preceding the first explicit tag.

Parameters:
  `tagName` - the tag name, or `null` if none

### fragments

public List fragments()
Returns the live list of fragments in this tag element.

The fragments cover everything following the tag name (or everything if there is no tag name), and generally omit embedded line breaks (and leading whitespace on new lines, including any leading "*"). `AbstractTagElement` nodes are used to represent tag elements (e.g., "@link") nested within this tag element.

Here are some typical examples:

- "@see Foo#bar()" - TagElement with tag name "@see"; fragments() contains a single MethodRef node
- "@param args the program arguments" - TagElement with tag name "@param"; 2 fragments: SimpleName ("args"), TextElement (" the program arguments")
- "@return See {@link #foo foo} instead." - TagElement with tag name "@return"; 3 fragments: TextElement ("See "), TagElement (for "@link #foo foo"), TextElement (" instead.")

The use of Name, MethodRef, and MemberRef nodes within tag elements allows these fragments to be queried for binding information.

Adding and removing nodes from this list affects this node dynamically. The nodes in this list may be of various types, including `TextElement`, `AbstractTagElement`, `Name`, `MemberRef`, and `MethodRef`. Clients should assume that the list of types may grow in the future, and write their code to deal with unexpected nodes types. However, attempts to add a non-prescribed type of node will trigger an exception.

Returns:
  the live list of doc elements in this tag element (element type: `IDocElement`)

### isNested

public boolean isNested()
Returns whether this tag element is nested within another tag element. Nested tag elements appears enclosed in "{" and "}"; certain doc tags, including "@link" and "@linkplain" are only meaningful as nested tags. Top-level (i.e., non-nested) doc tags begin on a new line; certain doc tags, including "@param" and "@see" are only meaningful as top-level tags.

This convenience methods checks to see whether the parent of this node is of type `AbstractTagElement`.

Returns:
  `true` if this node is a nested tag element, and false if this node is either parented by a doc comment node (`Javadoc`), or is unparented