/******************************************************************************* * Copyright (c) 2000, 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpdt.core.dom; /** * Abstract base class of all type AST node types. A type node represents a * reference to a primitive type (including void), to an array type, or to a * simple named type (or type variable), to a qualified type, to a * parameterized type, or to a wildcard type. Note that not all of these * are meaningful in all contexts; for example, a wildcard type is only * meaningful in the type argument position of a parameterized type. *
*
* Type: * PrimitiveType * ArrayType * SimpleType * QualifiedType * ParameterizedType * WildcardType * PrimitiveType: * byte * short * char * int * long * float * double * boolean * void * ArrayType: * Type [ ] * SimpleType: * TypeName * ParameterizedType: * Type < Type { , Type } > * QualifiedType: * Type . SimpleName * WildcardType: * ? [ ( extends | super) Type ] ** * * @since 2.0 */ public abstract class Type extends ASTNode { /** * Creates a new AST node for a type owned by the given AST. *
* N.B. This constructor is package-private. *
* * @param ast the AST that is to own this node */ Type(AST ast) { super(ast); } /** * Returns whether this type is a primitive type * (PrimitiveType
).
*
* @return true
if this is a primitive type, and
* false
otherwise
*/
public final boolean isPrimitiveType() {
return (this instanceof PrimitiveType);
}
/**
* Returns whether this type is a simple type
* (SimpleType
).
*
* @return true
if this is a simple type, and
* false
otherwise
*/
public final boolean isSimpleType() {
return (this instanceof SimpleType);
}
/**
* Returns whether this type is an array type
* (ArrayType
).
*
* @return true
if this is an array type, and
* false
otherwise
*/
public final boolean isArrayType() {
return (this instanceof ArrayType);
}
/**
* Returns whether this type is a parameterized type
* (ParameterizedType
).
*
* @return true
if this is a parameterized type, and
* false
otherwise
* @since 3.1
*/
public final boolean isParameterizedType() {
return (this instanceof ParameterizedType);
}
/**
* Returns whether this type is a qualified type
* (QualifiedType
).
* * Note that a type like "A.B" can be represented either of two ways: *
QualifiedType(SimpleType(SimpleName("A")),SimpleName("B"))
* SimpleType(QualifiedName(SimpleName("A"),SimpleName("B")))
* true
if this is a qualified type, and
* false
otherwise
* @since 3.1
*/
public final boolean isQualifiedType() {
return (this instanceof QualifiedType);
}
/**
* Returns whether this type is a wildcard type
* (WildcardType
).
*
* Note that a wildcard type is only meaningful as a
* type argument of a ParameterizedType
node.
*
true
if this is a wildcard type, and
* false
otherwise
* @since 3.1
*/
public final boolean isWildcardType() {
return (this instanceof WildcardType);
}
/**
* Resolves and returns the binding for this type.
* * Note that bindings are generally unavailable unless requested when the * AST is being built. *
* * @return the type binding, ornull
if the binding cannot be
* resolved
*/
public final ITypeBinding resolveBinding() {
return this.ast.getBindingResolver().resolveType(this);
}
}