Package org.eclipse.jdt.core.dom

## Class SimpleName

- java.lang.Object
- - org.eclipse.jdt.core.dom.ASTNode
  - - org.eclipse.jdt.core.dom.Expression
    - - org.eclipse.jdt.core.dom.Name
      - - org.eclipse.jdt.core.dom.SimpleName

All Implemented Interfaces:
  `IDocElement`

    public class SimpleName
    extends Name

AST node for a simple name. A simple name is an identifier other than a keyword, boolean literal ("true", "false") or null literal ("null").

     SimpleName:
         Identifier

Since:
  2.0
Restriction:
  This class is not intended to be instantiated by clients.

### Field Summary

Fields
`static SimplePropertyDescriptor` `IDENTIFIER_PROPERTY` The "identifier" structural property of this node type (type: `String`).
`static SimplePropertyDescriptor` `VAR_PROPERTY` The "var" property of this node name (type: `Boolean`) (added in JLS10 API).

### Fields inherited from class org.eclipse.jdt.core.dom.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, CAST_EXPRESSION, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, COMPILATION_UNIT, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, CREATION_REFERENCE, DIMENSION, DO_STATEMENT, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENUM_CONSTANT_DECLARATION, ENUM_DECLARATION, EXPORTS_DIRECTIVE, EXPRESSION_METHOD_REFERENCE, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_STATEMENT, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, INTERSECTION_TYPE, JAVADOC, 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, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NUMBER_LITERAL, OPENS_DIRECTIVE, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, PROVIDES_DIRECTIVE, QUALIFIED_NAME, QUALIFIED_TYPE, 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, TEXT_BLOCK, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_METHOD_REFERENCE, TYPE_PARAMETER, UNION_TYPE, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, YIELD_STATEMENT`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`String` `getIdentifier()` Returns this node's identifier.
`boolean` `isDeclaration()` Returns whether this simple name represents a name that is being defined, as opposed to one being referenced.
`boolean` `isVar()` Returns whether this represents a "var" type or not (added in JLS10 API).
`static List` `propertyDescriptors​(int apiLevel)` Returns a list of structural property descriptors for this node type.
`void` `setIdentifier​(String identifier)` Sets the identifier of this node to the given value.

### Methods inherited from class org.eclipse.jdt.core.dom.Name

`getFullyQualifiedName, isQualifiedName, isSimpleName, resolveBinding`

### Methods inherited from class org.eclipse.jdt.core.dom.Expression

`resolveBoxing, resolveConstantExpressionValue, resolveTypeBinding, resolveUnboxing`

### Methods inherited from class org.eclipse.jdt.core.dom.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 java.lang.Object

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

### Field Detail

#### IDENTIFIER_PROPERTY

    public static final SimplePropertyDescriptor IDENTIFIER_PROPERTY

The "identifier" structural property of this node type (type: `String`).

Since:
  3.0

#### VAR_PROPERTY

    public static final SimplePropertyDescriptor VAR_PROPERTY

The "var" property of this node name (type: `Boolean`) (added in JLS10 API).

Since:
  3.14

### Method Detail

#### propertyDescriptors

    public static List propertyDescriptors​(int apiLevel)

Returns a list of structural property descriptors for this node type. Clients must not modify the result.

Parameters:
  `apiLevel` - the API level; one of the AST.JLS* constants
Returns:
  a list of property descriptors (element type: `StructuralPropertyDescriptor`)
Since:
  3.0

#### getIdentifier

    public String getIdentifier()

Returns this node's identifier.

Returns:
  the identifier of this node

#### setIdentifier

    public void setIdentifier​(String identifier)

Sets the identifier of this node to the given value. The identifier should be legal according to the rules of the Java language. Note that keywords are not legal identifiers.

Note that the list of keywords may depend on the version of the language (determined when the AST object was created).

Parameters:
  `identifier` - the identifier of this node
Throws:
  `IllegalArgumentException` - if the identifier is invalid

#### isVar

    public boolean isVar()

Returns whether this represents a "var" type or not (added in JLS10 API).

Returns:
  `true` if this is a var type and `false` otherwise
Throws:
  `UnsupportedOperationException` - if this operation is used in an AST below JLS10
Since:
  3.14

#### isDeclaration

    public boolean isDeclaration()

Returns whether this simple name represents a name that is being defined, as opposed to one being referenced. The following positions are considered ones where a name is defined:

- The type name in a `TypeDeclaration` node.
- The method name in a `MethodDeclaration` node providing `isConstructor` is `false`.
- The variable name in any type of `VariableDeclaration` node.
- The enum type name in a `EnumDeclaration` node.
- The enum constant name in an `EnumConstantDeclaration` node.
- The variable name in an `EnhancedForStatement` node.
- The type variable name in a `TypeParameter` node.
- The type name in an `AnnotationTypeDeclaration` node.
- The member name in an `AnnotationTypeMemberDeclaration` node.

Note that this is a convenience method that simply checks whether this node appears in the declaration position relative to its parent. It always returns `false` if this node is unparented.

Returns:
  `true` if this node declares a name, and `false` otherwise