/* * @(#)DeclaredType.java 1.6 04/06/07 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package com.sun.mirror.type; import java.util.Collection; import com.sun.mirror.declaration.TypeDeclaration; /** * Represents a declared type, either a class type or an interface type. * This includes parameterized types such as {@code java.util.Set} * as well as raw types. * *

While a TypeDeclaration represents the declaration * of a class or interface, a DeclaredType represents a class * or interface type, the latter being a use of the former. * See {@link TypeDeclaration} for more on this distinction. * *

A DeclaredType may represent a type * for which details (declaration, supertypes, etc.) are unknown. * This may be the result of a processing error, such as a missing class file, * and is indicated by {@link #getDeclaration()} returning null. * Other method invocations on such an unknown type will not, in general, * return meaningful results. * * @author Joseph D. Darcy * @author Scott Seligman * @version 1.6 04/06/07 * @since 1.5 */ public interface DeclaredType extends ReferenceType { /** * Returns the declaration of this type. * *

Returns null if this type's declaration is unknown. This may * be the result of a processing error, such as a missing class file. * * @return the declaration of this type, or null if unknown */ TypeDeclaration getDeclaration(); /** * Returns the type that contains this type as a member. * Returns null if this is a top-level type. * *

For example, the containing type of {@code O.I} * is the type {@code O}, and the containing type of * {@code O.I} is the type {@code O}. * * @return the type that contains this type, * or null if this is a top-level type */ DeclaredType getContainingType(); /** * Returns (in order) the actual type arguments of this type. * For a generic type nested within another generic type * (such as {@code Outer.Inner}), only the type * arguments of the innermost type are included. * * @return the actual type arguments of this type, or an empty collection * if there are none */ Collection getActualTypeArguments(); /** * Returns the interface types that are direct supertypes of this type. * These are the interface types implemented or extended * by this type's declaration, with any type arguments * substituted in. * *

For example, the interface type extended by * {@code java.util.Set} is {@code java.util.Collection}. * * @return the interface types that are direct supertypes of this type, * or an empty collection if there are none */ Collection getSuperinterfaces(); }