Eclipse JDT
2.0

org.eclipse.jdt.core.dom
Class AST

java.lang.Object
  |
  +--org.eclipse.jdt.core.dom.AST

public final class AST
extends Object

Umbrella owner and abstract syntax tree node factory. An AST instance serves as the common owner of any number of AST nodes, and as the factory for creating new AST nodes owned by that instance.

Abstract syntax trees may be hand constructed by clients, using the newTYPE factory methods to create new nodes, and the various setCHILD methods (see ASTNode and its subclasses) to connect them together.

Each AST node belongs to a unique AST instance, called the owning AST. The children of an AST node always have the same owner as their parent node. If a node from one AST is to be added to a different AST, the subtree must be cloned first to ensures that the added nodes have the correct owning AST.

The static method parseCompilationUnit parses a string containing a Java compilation unit and returns the abstract syntax tree for it. The resulting nodes carry source ranges relating the node back to the original source characters. Optional name and type resolution can also be requested at the time the AST is created.

Clients may create instances of this class, which is not intended to be subclassed.

Since:
2.0
See Also:
parseCompilationUnit(org.eclipse.jdt.core.ICompilationUnit, boolean), ASTNode

Constructor Summary
AST()
          Creates a new, empty abstract syntax tree using default options.
AST(Map options)
          Creates a new, empty abstract syntax tree using the given options.
 
Method Summary
 long modificationCount()
          Returns the modification count for this AST.
 AnonymousClassDeclaration newAnonymousClassDeclaration()
          Creates and returns a new unparented anonymous class declaration node owned by this AST.
 ArrayAccess newArrayAccess()
          Creates and returns a new unparented array access expression node owned by this AST.
 ArrayCreation newArrayCreation()
          Creates and returns a new unparented array creation expression node owned by this AST.
 ArrayInitializer newArrayInitializer()
          Creates and returns a new unparented array initializer node owned by this AST.
 ArrayType newArrayType(Type componentType)
          Creates and returns a new unparented array type node with the given component type, which may be another array type.
 ArrayType newArrayType(Type elementType, int dimensions)
          Creates and returns a new unparented array type node with the given element type and number of dimensions.
 AssertStatement newAssertStatement()
          Creates a new unparented assert statement node owned by this AST.
 Assignment newAssignment()
          Creates and returns a new unparented assignment expression node owned by this AST.
 Block newBlock()
          Creates an unparented block node owned by this AST, for an empty list of statements.
 BooleanLiteral newBooleanLiteral(boolean value)
          Creates and returns a new unparented boolean literal node.
 BreakStatement newBreakStatement()
          Creates an unparented break statement node owned by this AST.
 CastExpression newCastExpression()
          Creates and returns a new unparented cast expression node owned by this AST.
 CatchClause newCatchClause()
          Creates a new unparented catch clause node owned by this AST.
 CharacterLiteral newCharacterLiteral()
          Creates and returns a new unparented character literal node.
 ClassInstanceCreation newClassInstanceCreation()
          Creates and returns a new unparented class instance creation ("new") expression node owned by this AST.
 CompilationUnit newCompilationUnit()
          Creates an unparented compilation unit node owned by this AST.
 ConditionalExpression newConditionalExpression()
          Creates and returns a new unparented conditional expression node owned by this AST.
 ConstructorInvocation newConstructorInvocation()
          Creates an unparented alternate constructor ("this(...);") invocation statement node owned by this AST.
 ContinueStatement newContinueStatement()
          Creates an unparented continue statement node owned by this AST.
 DoStatement newDoStatement()
          Creates a new unparented do statement node owned by this AST.
 EmptyStatement newEmptyStatement()
          Creates a new unparented empty statement node owned by this AST.
 ExpressionStatement newExpressionStatement(Expression expression)
          Creates a new unparented expression statement node owned by this AST, for the given expression.
 FieldAccess newFieldAccess()
          Creates and returns a new unparented field access expression node owned by this AST.
 FieldDeclaration newFieldDeclaration(VariableDeclarationFragment fragment)
          Creates a new unparented field declaration node owned by this AST, for the given variable declaration fragment.
 ForStatement newForStatement()
          Creates a new unparented for statement node owned by this AST.
 IfStatement newIfStatement()
          Creates a new unparented if statement node owned by this AST.
 ImportDeclaration newImportDeclaration()
          Creates an unparented import declaration node owned by this AST.
 InfixExpression newInfixExpression()
          Creates and returns a new unparented infix expression node owned by this AST.
 Initializer newInitializer()
          Creates an unparented initializer node owned by this AST, with an empty block.
 InstanceofExpression newInstanceofExpression()
          Creates and returns a new unparented instanceof expression node owned by this AST.
 Javadoc newJavadoc()
          Creates and returns a new Javadoc comment node.
 LabeledStatement newLabeledStatement()
          Creates a new unparented labeled statement node owned by this AST.
 MethodDeclaration newMethodDeclaration()
          Creates an unparented method declaration node owned by this AST.
 MethodInvocation newMethodInvocation()
          Creates an unparented method invocation expression node owned by this AST.
 Name newName(String[] identifiers)
          Creates and returns a new unparented name node for the given name segments.
 NullLiteral newNullLiteral()
          Creates and returns a new unparented null literal node.
 NumberLiteral newNumberLiteral()
          Creates and returns a new unparented number literal node.
 NumberLiteral newNumberLiteral(String literal)
          Creates and returns a new unparented number literal node.
 PackageDeclaration newPackageDeclaration()
          Creates an unparented package declaration node owned by this AST.
 ParenthesizedExpression newParenthesizedExpression()
          Creates and returns a new unparented parenthesized expression node owned by this AST.
 PostfixExpression newPostfixExpression()
          Creates and returns a new unparented postfix expression node owned by this AST.
 PrefixExpression newPrefixExpression()
          Creates and returns a new unparented prefix expression node owned by this AST.
 PrimitiveType newPrimitiveType(PrimitiveType.Code typeCode)
          Creates and returns a new unparented primitive type node with the given type code.
 QualifiedName newQualifiedName(Name qualifier, SimpleName name)
          Creates and returns a new unparented qualified name node for the given qualifier and simple name child node.
 ReturnStatement newReturnStatement()
          Creates a new unparented return statement node owned by this AST.
 SimpleName newSimpleName(String identifier)
          Creates and returns a new unparented simple name node for the given identifier.
 SimpleType newSimpleType(Name typeName)
          Creates and returns a new unparented simple type node with the given type name.
 SingleVariableDeclaration newSingleVariableDeclaration()
          Creates an unparented single variable declaration node owned by this AST.
 StringLiteral newStringLiteral()
          Creates and returns a new unparented string literal node for the empty string literal.
 SuperConstructorInvocation newSuperConstructorInvocation()
          Creates an unparented alternate super constructor ("super(...);") invocation statement node owned by this AST.
 SuperFieldAccess newSuperFieldAccess()
          Creates and returns a new unparented super field access expression node owned by this AST.
 SuperMethodInvocation newSuperMethodInvocation()
          Creates an unparented "super" method invocation expression node owned by this AST.
 SwitchCase newSwitchCase()
          Creates a new unparented switch case statement node owned by this AST.
 SwitchStatement newSwitchStatement()
          Creates a new unparented switch statement node owned by this AST.
 SynchronizedStatement newSynchronizedStatement()
          Creates a new unparented synchronized statement node owned by this AST.
 ThisExpression newThisExpression()
          Creates and returns a new unparented "this" expression node owned by this AST.
 ThrowStatement newThrowStatement()
          Creates a new unparented throw statement node owned by this AST.
 TryStatement newTryStatement()
          Creates a new unparented try statement node owned by this AST.
 TypeDeclaration newTypeDeclaration()
          Creates an unparented class declaration node owned by this AST.
 TypeDeclarationStatement newTypeDeclarationStatement(TypeDeclaration decl)
          Creates a new unparented local type declaration statement node owned by this AST, for the given type declaration.
 TypeLiteral newTypeLiteral()
          Creates and returns a new unparented type literal expression node owned by this AST.
 VariableDeclarationExpression newVariableDeclarationExpression(VariableDeclarationFragment fragment)
          Creates a new unparented local variable declaration expression node owned by this AST, for the given variable declaration fragment.
 VariableDeclarationFragment newVariableDeclarationFragment()
          Creates an unparented variable declaration fragment node owned by this AST.
 VariableDeclarationStatement newVariableDeclarationStatement(VariableDeclarationFragment fragment)
          Creates a new unparented local variable declaration statement node owned by this AST, for the given variable declaration fragment.
 WhileStatement newWhileStatement()
          Creates a new unparented while statement node owned by this AST.
static CompilationUnit parseCompilationUnit(char[] source)
          Parses the given string as a Java compilation unit and creates and returns a corresponding abstract syntax tree.
static CompilationUnit parseCompilationUnit(char[] source, String unitName, IJavaProject project)
          Parses the given string as the hypothetical contents of the named compilation unit and creates and returns a corresponding abstract syntax tree.
static CompilationUnit parseCompilationUnit(ICompilationUnit unit, boolean resolveBindings)
          Parses the given string as a Java compilation unit and creates and returns a corresponding abstract syntax tree.
 ITypeBinding resolveWellKnownType(String name)
          Returns the type binding for a "well known" type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AST

public AST()
Creates a new, empty abstract syntax tree using default options.

See Also:
JavaCore.getDefaultOptions()

AST

public AST(Map options)
Creates a new, empty abstract syntax tree using the given options.

Following option keys are significant:

Options other than the above are ignored.

Parameters:
options - the table of options (key type: String; value type: String)
See Also:
JavaCore.getDefaultOptions()
Method Detail

modificationCount

public long modificationCount()
Returns the modification count for this AST. The modification count is a non-negative value that increases (by 1 or perhaps by more) as this AST or its nodes are changed. The initial value is unspecified.

The following things count as modifying an AST:

Operations which do not entail creating or modifying existing nodes do not increase the modification count.

N.B. This method may be called several times in the course of a single client operation. The only promise is that the modification count increases monotonically as the AST or its nodes change; there is no promise that a modifying operation increases the count by exactly 1.

Returns:
the current value (non-negative) of the modification counter of this AST

parseCompilationUnit

public static CompilationUnit parseCompilationUnit(ICompilationUnit unit,
                                                   boolean resolveBindings)
Parses the given string as a Java compilation unit and creates and returns a corresponding abstract syntax tree.

The returned compilation unit node is the root node of a new AST. Each node in the subtree carries source range(s) information relating back to positions in the given source string (the given source string itself is not remembered with the AST). If a syntax error is detected while parsing, the relevant node(s) of the tree will be flagged as MALFORMED.

If resolveBindings is true, the various names and types appearing in the compilation unit can be resolved to "bindings" by calling the resolveBinding methods. These bindings draw connections between the different parts of a program, and generally afford a more powerful vantage point for clients who wish to analyze a program's structure more deeply. These bindings come at a considerable cost in both time and space, however, and should not be requested frivolously. The additional space is not reclaimed until the AST, all its nodes, and all its bindings become garbage. So it is very important to not retain any of these objects longer than absolutely necessary. Note that bindings can only be resolved while the AST remains in its original unmodified state. Once the AST is modified, all resolveBinding methods return null. If resolveBindings is false, the analysis does not go beyond parsing and building the tree, and all resolveBinding methods return null from the outset.

Parameters:
unit - the Java model compilation unit whose source code is to be parsed
resolveBindings - true if bindings are wanted, and false if bindings are not of interest
Returns:
the compilation unit node
See Also:
ASTNode.getFlags(), ASTNode.MALFORMED, ASTNode.getStartPosition(), ASTNode.getLength()

parseCompilationUnit

public static CompilationUnit parseCompilationUnit(char[] source,
                                                   String unitName,
                                                   IJavaProject project)
Parses the given string as the hypothetical contents of the named compilation unit and creates and returns a corresponding abstract syntax tree.

The returned compilation unit node is the root node of a new AST. Each node in the subtree carries source range(s) information relating back to positions in the given source string (the given source string itself is not remembered with the AST). If a syntax error is detected while parsing, the relevant node(s) of the tree will be flagged as MALFORMED.

If the given project is not null, the various names and types appearing in the compilation unit can be resolved to "bindings" by calling the resolveBinding methods. These bindings draw connections between the different parts of a program, and generally afford a more powerful vantage point for clients who wish to analyze a program's structure more deeply. These bindings come at a considerable cost in both time and space, however, and should not be requested frivolously. The additional space is not reclaimed until the AST, all its nodes, and all its bindings become garbage. So it is very important to not retain any of these objects longer than absolutely necessary. Note that bindings can only be resolved while the AST remains in its original unmodified state. Once the AST is modified, all resolveBinding methods return null. If the given project is null, the analysis does not go beyond parsing and building the tree, and all resolveBinding methods return null from the outset.

The name of the compilation unit must be supplied for resolving bindings. This name should include the ".java" suffix and match the name of the main (public) class or interface declared in the source. For example, if the source declares a public class named "Foo", the name of the compilation should be "Foo.java". For the purposes of resolving bindings, types declared in the source string hide types by the same name available through the classpath of the given project.

Parameters:
source - the string to be parsed as a Java compilation unit
unitName - the name of the compilation unit that would contain the source string, or null if javaProject is also null
project - the Java project used to resolve names, or null if bindings are not resolved
Returns:
the compilation unit node
See Also:
ASTNode.getFlags(), ASTNode.MALFORMED, ASTNode.getStartPosition(), ASTNode.getLength()

parseCompilationUnit

public static CompilationUnit parseCompilationUnit(char[] source)
Parses the given string as a Java compilation unit and creates and returns a corresponding abstract syntax tree.

The returned compilation unit node is the root node of a new AST. Each node in the subtree carries source range(s) information relating back to positions in the given source string (the given source string itself is not remembered with the AST). If a syntax error is detected while parsing, the relevant node(s) of the tree will be flagged as MALFORMED.

Parameters:
source - the string to be parsed as a Java compilation unit
See Also:
ASTNode.getFlags(), ASTNode.MALFORMED, ASTNode.getStartPosition(), ASTNode.getLength()

resolveWellKnownType

public ITypeBinding resolveWellKnownType(String name)
Returns the type binding for a "well known" type.

Note that bindings are generally unavailable unless requested when the AST is being built.

The following type names are supported:

Parameters:
name - the name of a well known type
Returns:
the corresponding type binding, or null if the named type is not considered well known or if no binding can be found for it

newSimpleName

public SimpleName newSimpleName(String identifier)
Creates and returns a new unparented simple name node for the given identifier. The identifier should be a legal Java identifier, but not a keyword, boolean literal ("true", "false") or null literal ("null").

Parameters:
identifier - the identifier
Returns:
a new unparented simple name node
Throws:
IllegalArgumentException - if the identifier is invalid

newQualifiedName

public QualifiedName newQualifiedName(Name qualifier,
                                      SimpleName name)
Creates and returns a new unparented qualified name node for the given qualifier and simple name child node.

Parameters:
qualifier - the qualifier name node
name - the simple name being qualified
Returns:
a new unparented qualified name node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent

newName

public Name newName(String[] identifiers)
Creates and returns a new unparented name node for the given name segments. Returns a simple name if there is only one name segment, and a qualified name if there are multiple name segments. Each of the name segments should be legal Java identifiers (this constraint may or may not be enforced), and there must be at least one name segment.

Parameters:
identifiers - a list of 1 or more name segments, each of which is a legal Java identifier
Returns:
a new unparented name node
Throws:
IllegalArgumentException - if:
  • the identifier is invalid
  • the list of identifiers is empty

newSimpleType

public SimpleType newSimpleType(Name typeName)
Creates and returns a new unparented simple type node with the given type name.

This method can be used to convert a name (Name) into a type (Type) by wrapping it.

Parameters:
typeName - the name of the class or interface
Returns:
a new unparented simple type node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent

newArrayType

public ArrayType newArrayType(Type componentType)
Creates and returns a new unparented array type node with the given component type, which may be another array type.

Parameters:
componentType - the component type (possibly another array type)
Returns:
a new unparented array type node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent
  • a cycle in would be created

newArrayType

public ArrayType newArrayType(Type elementType,
                              int dimensions)
Creates and returns a new unparented array type node with the given element type and number of dimensions.

Note that if the element type passed in is an array type, the element type of the result will not be the same as what was passed in.

Parameters:
elementType - the element type (never an array type)
dimensions - the number of dimensions, a positive number
Returns:
a new unparented array type node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent
  • a cycle in would be created

newPrimitiveType

public PrimitiveType newPrimitiveType(PrimitiveType.Code typeCode)
Creates and returns a new unparented primitive type node with the given type code.

Parameters:
typeCode - one of the primitive type code constants declared in PrimitiveType
Returns:
a new unparented primitive type node
Throws:
IllegalArgumentException - if the primitive type code is invalid

newCompilationUnit

public CompilationUnit newCompilationUnit()
Creates an unparented compilation unit node owned by this AST. The compilation unit initially has no package declaration, no import declarations, and no type declarations.

Note that the new compilation unit is not automatically made the root node of this AST. This must be done explicitly by calling setRoot.

Returns:
the new unparented compilation unit node

newPackageDeclaration

public PackageDeclaration newPackageDeclaration()
Creates an unparented package declaration node owned by this AST. The package declaration initially declares a package with an unspecified name.

Returns:
the new unparented package declaration node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent

newImportDeclaration

public ImportDeclaration newImportDeclaration()
Creates an unparented import declaration node owned by this AST. The import declaration initially contains a single-type import of a type with an unspecified name.

Returns:
the new unparented import declaration node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent

newTypeDeclaration

public TypeDeclaration newTypeDeclaration()
Creates an unparented class declaration node owned by this AST. The name of the class is an unspecified, but legal, name; no modifiers; no Javadoc comment; no superclass or superinterfaces; and an empty class body.

To create an interface, use this method and then call TypeDeclaration.setInterface(true) and

Returns:
a new unparented type declaration node

newMethodDeclaration

public MethodDeclaration newMethodDeclaration()
Creates an unparented method declaration node owned by this AST. By default, the declaration is for a method of an unspecified, but legal, name; no modifiers; no Javadoc comment; no parameters; return type void; no thrown exceptions; and no body (as opposed to an empty body).

To create a constructor, use this method and then call MethodDeclaration.setConstructor(true) and MethodDeclaration.setName(className).

Returns:
a new unparented method declaration node

newSingleVariableDeclaration

public SingleVariableDeclaration newSingleVariableDeclaration()
Creates an unparented single variable declaration node owned by this AST. By default, the declaration is for a variable with an unspecified, but legal, name and type; no modifiers; and no initializer.

Returns:
a new unparented single variable declaration node

newVariableDeclarationFragment

public VariableDeclarationFragment newVariableDeclarationFragment()
Creates an unparented variable declaration fragment node owned by this AST. By default, the fragment is for a variable with an unspecified, but legal, name; no extra array dimensions; and no initializer.

Returns:
a new unparented variable declaration fragment node

newInitializer

public Initializer newInitializer()
Creates an unparented initializer node owned by this AST, with an empty block. By default, the initializer has no modifiers and an empty block.

Returns:
a new unparented initializer node

newJavadoc

public Javadoc newJavadoc()
Creates and returns a new Javadoc comment node. Initially the new node has an unspecified, but legal, Javadoc comment.

Returns:
a new unparented Javadoc comment node

newVariableDeclarationStatement

public VariableDeclarationStatement newVariableDeclarationStatement(VariableDeclarationFragment fragment)
Creates a new unparented local variable declaration statement node owned by this AST, for the given variable declaration fragment. By default, there are no modifiers and the base type is unspecified (but legal).

This method can be used to convert a variable declaration fragment (VariableDeclarationFragment) into a statement (Statement) by wrapping it. Additional variable declaration fragments can be added afterwards.

Parameters:
fragment - the variable declaration fragment
Returns:
a new unparented variable declaration statement node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent
  • a cycle in would be created

newTypeDeclarationStatement

public TypeDeclarationStatement newTypeDeclarationStatement(TypeDeclaration decl)
Creates a new unparented local type declaration statement node owned by this AST, for the given type declaration.

This method can be used to convert a type declaration (TypeDeclaration) into a statement (Statement) by wrapping it.

Parameters:
decl - the type declaration
Returns:
a new unparented local type declaration statement node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent
  • a cycle in would be created

newBlock

public Block newBlock()
Creates an unparented block node owned by this AST, for an empty list of statements.

Returns:
a new unparented, empty block node

newContinueStatement

public ContinueStatement newContinueStatement()
Creates an unparented continue statement node owned by this AST. The continue statement has no label.

Returns:
a new unparented continue statement node

newBreakStatement

public BreakStatement newBreakStatement()
Creates an unparented break statement node owned by this AST. The break statement has no label.

Returns:
a new unparented break statement node

newExpressionStatement

public ExpressionStatement newExpressionStatement(Expression expression)
Creates a new unparented expression statement node owned by this AST, for the given expression.

This method can be used to convert an expression (Expression) into a statement (Type) by wrapping it. Note, however, that the result is only legal for limited expression types, including method invocations, assignments, and increment/decrement operations.

Parameters:
expression - the expression
Returns:
a new unparented statement node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent
  • a cycle in would be created

newIfStatement

public IfStatement newIfStatement()
Creates a new unparented if statement node owned by this AST. By default, the expression is unspecified (but legal), the then statement is an empty block, and there is no else statement.

Returns:
a new unparented if statement node

newWhileStatement

public WhileStatement newWhileStatement()
Creates a new unparented while statement node owned by this AST. By default, the expression is unspecified (but legal), and the body statement is an empty block.

Returns:
a new unparented while statement node

newDoStatement

public DoStatement newDoStatement()
Creates a new unparented do statement node owned by this AST. By default, the expression is unspecified (but legal), and the body statement is an empty block.

Returns:
a new unparented do statement node

newTryStatement

public TryStatement newTryStatement()
Creates a new unparented try statement node owned by this AST. By default, the try statement has an empty block, no catch clauses, and no finally block.

Returns:
a new unparented try statement node

newCatchClause

public CatchClause newCatchClause()
Creates a new unparented catch clause node owned by this AST. By default, the catch clause declares an unspecified, but legal, exception declaration and has an empty block.

Returns:
a new unparented catch clause node

newReturnStatement

public ReturnStatement newReturnStatement()
Creates a new unparented return statement node owned by this AST. By default, the return statement has no expression.

Returns:
a new unparented return statement node

newThrowStatement

public ThrowStatement newThrowStatement()
Creates a new unparented throw statement node owned by this AST. By default, the expression is unspecified, but legal.

Returns:
a new unparented throw statement node

newAssertStatement

public AssertStatement newAssertStatement()
Creates a new unparented assert statement node owned by this AST. By default, the first expression is unspecified, but legal, and has no message expression.

Returns:
a new unparented assert statement node

newEmptyStatement

public EmptyStatement newEmptyStatement()
Creates a new unparented empty statement node owned by this AST.

Returns:
a new unparented empty statement node

newLabeledStatement

public LabeledStatement newLabeledStatement()
Creates a new unparented labeled statement node owned by this AST. By default, the label and statement are both unspecified, but legal.

Returns:
a new unparented labeled statement node

newSwitchStatement

public SwitchStatement newSwitchStatement()
Creates a new unparented switch statement node owned by this AST. By default, the expression is unspecified, but legal, and there are no statements or switch cases.

Returns:
a new unparented labeled statement node

newSwitchCase

public SwitchCase newSwitchCase()
Creates a new unparented switch case statement node owned by this AST. By default, the expression is unspecified, but legal.

Returns:
a new unparented switch case node

newSynchronizedStatement

public SynchronizedStatement newSynchronizedStatement()
Creates a new unparented synchronized statement node owned by this AST. By default, the expression is unspecified, but legal, and the body is an empty block.

Returns:
a new unparented synchronized statement node

newForStatement

public ForStatement newForStatement()
Creates a new unparented for statement node owned by this AST. By default, there are no initializers, no condition expression, no updaters, and the body is an empty block.

Returns:
a new unparented throw statement node

newStringLiteral

public StringLiteral newStringLiteral()
Creates and returns a new unparented string literal node for the empty string literal.

Returns:
a new unparented string literal node

newCharacterLiteral

public CharacterLiteral newCharacterLiteral()
Creates and returns a new unparented character literal node. Initially the node has an unspecified character literal.

Returns:
a new unparented character literal node

newNumberLiteral

public NumberLiteral newNumberLiteral(String literal)
Creates and returns a new unparented number literal node.

Parameters:
literal - the token for the numeric literal as it would appear in Java source code
Returns:
a new unparented number literal node

newNumberLiteral

public NumberLiteral newNumberLiteral()
Creates and returns a new unparented number literal node. Initially the number literal token is "0".

Returns:
a new unparented number literal node

newNullLiteral

public NullLiteral newNullLiteral()
Creates and returns a new unparented null literal node.

Returns:
a new unparented null literal node

newBooleanLiteral

public BooleanLiteral newBooleanLiteral(boolean value)
Creates and returns a new unparented boolean literal node.

For example, the assignment expression foo = true is generated by the following snippet:

 Assignment e= ast.newAssignment();
 e.setLeftHandSide(ast.newSimpleName("foo"));
 e.setRightHandSide(ast.newBooleanLiteral(true));
 

Parameters:
value - the boolean value
Returns:
a new unparented boolean literal node

newAssignment

public Assignment newAssignment()
Creates and returns a new unparented assignment expression node owned by this AST. By default, the assignment operator is "=" and the left and right hand side expressions are unspecified, but legal, names.

Returns:
a new unparented assignment expression node

newMethodInvocation

public MethodInvocation newMethodInvocation()
Creates an unparented method invocation expression node owned by this AST. By default, the name of the method is unspecified (but legal) there is no receiver expression, and the list of arguments is empty.

Returns:
a new unparented method invocation expression node

newSuperMethodInvocation

public SuperMethodInvocation newSuperMethodInvocation()
Creates an unparented "super" method invocation expression node owned by this AST. By default, the name of the method is unspecified (but legal) there is no qualifier, and the list of arguments is empty.

Returns:
a new unparented "super" method invocation expression node

newConstructorInvocation

public ConstructorInvocation newConstructorInvocation()
Creates an unparented alternate constructor ("this(...);") invocation statement node owned by this AST. By default, the list of arguments is empty.

Note that this type of node is a Statement, whereas a regular method invocation is an Expression. The only valid use of these statements are as the first statement of a constructor body.

Returns:
a new unparented alternate constructor invocation statement node

newSuperConstructorInvocation

public SuperConstructorInvocation newSuperConstructorInvocation()
Creates an unparented alternate super constructor ("super(...);") invocation statement node owned by this AST. By default, there is no qualifier and the list of arguments is empty.

Note that this type of node is a Statement, whereas a regular super method invocation is an Expression. The only valid use of these statements are as the first statement of a constructor body.

Returns:
a new unparented super constructor invocation statement node

newVariableDeclarationExpression

public VariableDeclarationExpression newVariableDeclarationExpression(VariableDeclarationFragment fragment)
Creates a new unparented local variable declaration expression node owned by this AST, for the given variable declaration fragment. By default, there are no modifiers and the base type is unspecified (but legal).

This method can be used to convert a variable declaration fragment (VariableDeclarationFragment) into an expression (Expression) by wrapping it. Additional variable declaration fragments can be added afterwards.

Parameters:
fragment - the first variable declaration fragment
Returns:
a new unparented variable declaration expression node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent
  • a cycle in would be created

newFieldDeclaration

public FieldDeclaration newFieldDeclaration(VariableDeclarationFragment fragment)
Creates a new unparented field declaration node owned by this AST, for the given variable declaration fragment. By default, there are no modifiers, no javadoc comment, and the base type is unspecified (but legal).

This method can be used to wrap a variable declaration fragment (VariableDeclarationFragment) into a field declaration suitable for inclusion in the body of a type declaration (FieldDeclaration implements BodyDeclaration). Additional variable declaration fragments can be added afterwards.

Parameters:
fragment - the variable declaration fragment
Returns:
a new unparented field declaration node
Throws:
IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent
  • a cycle in would be created

newThisExpression

public ThisExpression newThisExpression()
Creates and returns a new unparented "this" expression node owned by this AST. By default, there is no qualifier.

Returns:
a new unparented "this" expression node

newFieldAccess

public FieldAccess newFieldAccess()
Creates and returns a new unparented field access expression node owned by this AST. By default, the expression and field are both unspecified, but legal, names.

Returns:
a new unparented field access expression node

newSuperFieldAccess

public SuperFieldAccess newSuperFieldAccess()
Creates and returns a new unparented super field access expression node owned by this AST. By default, the expression and field are both unspecified, but legal, names.

Returns:
a new unparented super field access expression node

newTypeLiteral

public TypeLiteral newTypeLiteral()
Creates and returns a new unparented type literal expression node owned by this AST. By default, the type is unspecified (but legal).

Returns:
a new unparented type literal node

newCastExpression

public CastExpression newCastExpression()
Creates and returns a new unparented cast expression node owned by this AST. By default, the type and expression are unspecified (but legal).

Returns:
a new unparented cast expression node

newParenthesizedExpression

public ParenthesizedExpression newParenthesizedExpression()
Creates and returns a new unparented parenthesized expression node owned by this AST. By default, the expression is unspecified (but legal).

Returns:
a new unparented parenthesized expression node

newInfixExpression

public InfixExpression newInfixExpression()
Creates and returns a new unparented infix expression node owned by this AST. By default, the operator and left and right operand are unspecified (but legal), and there are no extended operands.

Returns:
a new unparented infix expression node

newInstanceofExpression

public InstanceofExpression newInstanceofExpression()
Creates and returns a new unparented instanceof expression node owned by this AST. By default, the operator and left and right operand are unspecified (but legal).

Returns:
a new unparented instanceof expression node

newPostfixExpression

public PostfixExpression newPostfixExpression()
Creates and returns a new unparented postfix expression node owned by this AST. By default, the operator and operand are unspecified (but legal).

Returns:
a new unparented postfix expression node

newPrefixExpression

public PrefixExpression newPrefixExpression()
Creates and returns a new unparented prefix expression node owned by this AST. By default, the operator and operand are unspecified (but legal).

Returns:
a new unparented prefix expression node

newArrayAccess

public ArrayAccess newArrayAccess()
Creates and returns a new unparented array access expression node owned by this AST. By default, the array and index expression are both unspecified (but legal).

Returns:
a new unparented array access expression node

newArrayCreation

public ArrayCreation newArrayCreation()
Creates and returns a new unparented array creation expression node owned by this AST. By default, the array type is an unspecified 1-dimensional array, the list of dimensions is empty, and there is no array initializer.

Examples:

 	// new String[len]
 ArrayCreation ac1 = ast.newArrayCreation();
 ac1.setType(
    ast.newArrayType(
       ast.newSimpleType(ast.newSimpleName("String"))));
 ac1.dimensions().add(ast.newSimpleName("len"));
 
 	// new double[7][24][]
 ArrayCreation ac2 = ast.newArrayCreation();
 ac2.setType(
    ast.newArrayType(
       ast.newPrimitiveType(PrimitiveType.DOUBLE), 3));
 ac2.dimensions().add(ast.newNumberLiteral("7"));
 ac2.dimensions().add(ast.newNumberLiteral("24"));

 // new int[] {1, 2}
 ArrayCreation ac3 = ast.newArrayCreation();
 ac3.setType(
    ast.newArrayType(
       ast.newPrimitiveType(PrimitiveType.INT)));
 ArrayInitializer ai = ast.newArrayInitializer();
 ac3.setInitializer(ai);
 ai.expressions().add(ast.newNumberLiteral("1"));
 ai.expressions().add(ast.newNumberLiteral("2"));
 

Returns:
a new unparented array creation expression node

newClassInstanceCreation

public ClassInstanceCreation newClassInstanceCreation()
Creates and returns a new unparented class instance creation ("new") expression node owned by this AST. By default, there is no qualifying expression, an unspecified (but legal) type name, an empty list of arguments, and does not declare an anonymous class declaration.

Returns:
a new unparented class instance creation expression node

newAnonymousClassDeclaration

public AnonymousClassDeclaration newAnonymousClassDeclaration()
Creates and returns a new unparented anonymous class declaration node owned by this AST. By default, the body declaration list is empty.

Returns:
a new unparented anonymous class declaration node

newArrayInitializer

public ArrayInitializer newArrayInitializer()
Creates and returns a new unparented array initializer node owned by this AST. By default, the initializer has no expressions.

Returns:
a new unparented array initializer node

newConditionalExpression

public ConditionalExpression newConditionalExpression()
Creates and returns a new unparented conditional expression node owned by this AST. By default, the condition and both expressions are unspecified (but legal).

Returns:
a new unparented array conditional expression node

Eclipse JDT
2.0

Copyright (c) IBM Corp. and others 2000, 2002. All Rights Reserved.