/******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpdt.core.jdom; /** * Represents a source type in a compilation unit, either as a top-level type or a member type. * The corresponding syntactic units are ClassDeclaration (JLS2 8.1) and InterfaceDeclaration (JLS2 9.1). *
* Allowable child types for a type are IDOMType
, IDOMField
,
* IDOMMethod
, and IDOMInitializer
.
* Children are listed in the order in which they appear in the source. The parent of a type
* is a type (in the case of a member type) or a compilation unit (in the case of a top-level type).
*
* This interface is not intended to be implemented by clients. *
*/ public interface IDOMType extends IDOMMember { /** * Adds the given interface name to the names of interfaces that this type implements or extends * (the name will be added after the existing interface names). This is a convenience method. * * For classes, this represents the interfaces that this class implements. * For interfaces, this represents the interfaces that this interface extends. * The name may or may not be fully qualified. * * @param interfaceName the syntax for an interface name is defined by * Interfaces in ClassDeclaration (JLS2 8.1). Type names must be specified as they would * appear in source code. For example: "Cloneable", "java.io.Serializable". * * @exception IllegalArgumentException ifnull
is specified
*/
public void addSuperInterface(String interfaceName) throws IllegalArgumentException;
/**
* The IDOMType
refinement of this IDOMNode
* method returns the name of this type. The name of a class is defined by
* ClassDeclaration (JLS2 8.1); the name of an interface is defined by
* InterfaceDeclaration (JLS2 9.1).
*/
public String getName();
/**
* Returns the name of this type's superclass. The syntax for a superclass name
* is specified by Super in ClassDeclaration (JLS2 8.1). Type names must be
* specified as they would appear in source code. For example:
* "Object"
, or "java.io.File"
.
*
* @return the superclass name, or null
if this type represents
* an interface or if no superclass has been assigned to this class
*/
public String getSuperclass();
/**
* Returns the names of interfaces that this type implements or extends,
* in the order in which they are listed in the source, or an empty array
* if no superinterfaces are present. The syntax for interface names is
* defined by Interfaces in ClassDeclaration (JLS2 8.1). Type names appear
* as they would in source code. For example: "Cloneable"
,
* or "java.io.Serializable"
.
* * For classes, this method returns the interfaces that this class implements. * For interfaces, this method returns the interfaces that this interface extends. *
* * @return the list of interface names */ public String[] getSuperInterfaces(); /** * Returns whether this type is a class. * * @returntrue
for classes, and false
for interfaces
*/
public boolean isClass();
/**
* Sets whether this type is a class or an interface. If this type is
* a class, and is changed to an interface, this type's superclass
* becomes null
. When a class becomes an interface or an
* interface becomes a class, superinterfaces remain (as part of an
* implements
clause for classes, or an extends
* clause for interfaces).
*
* @param b true
for classes, and false
for interfaces
*/
public void setClass(boolean b);
/**
* The IDOMType
refinement of this IDOMNode
* method sets the name of this type. The name of a class is defined by
* ClassDeclaration (JLS2 8.1); the name of an interface is defined by
* InterfaceDeclaration (JLS2 9.1).
*
* @exception IllegalArgumentException if null
is specified
*/
public void setName(String name) throws IllegalArgumentException;
/**
* Sets the name of this type's superclass. Has no effect if this type
* represents an interface. A null
name indicates that no
* superclass name (extends clause) should appear in the source code.
* The syntax for a superclass name is specified by Super in ClassDeclaration
* (JLS2 8.1). Type names must be specified as they would appear in source code.
* For example: "Object"
, or "java.io.File"
.
*
* @param superclassName the superclass name, or null
if this type
* should have to no explicitly specified superclass
*/
public void setSuperclass(String superclassName);
/**
* Sets the names of interfaces that this type implements or extends,
* in the order in which they are to be listed in the source. An empty array
* parameter indicates that no superinterfaces are present. The syntax for
* interface names is defined by Interfaces in ClassDeclaration (JLS2 8.1).
* Type names appear as they would in source code. For example:
* "Cloneable"
, or "java.io.Serializable"
.
* * For classes, this method sets the interfaces that this class implements. * For interfaces, this method sets the interfaces that this interface extends. *
* * @param interfaceNames the list of interface names */ public void setSuperInterfaces(String[] interfaceNames); }