/* * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package signature.model; import java.util.List; import java.util.Set; /** * {@code IClassDefinition} models a class definition. This is the model * equivalent to a class. */ public interface IClassDefinition extends ITypeDefinition, IGenericDeclaration, IAnnotatableElement { /** * Returns the kind of this class definition. * * @return the kind of this class definition */ Kind getKind(); /** * Returns the name of this class definition. * * @return the name of this class definition */ String getName(); /** * Returns the '.' separated package name of this class. * * @return the '.' separated package name of this class */ String getPackageName(); /** * Returns a list containing each package fragment. * <p> * If {@link #getPackageName()} returns : "a.b.c" this method returns a list * containing the three elements "a", "b", "c". * <p> * Note: this method exists only for convenience in output templating. * * @return a list containing each package fragment */ List<String> getPackageFragments(); /** * Returns the qualified name of this class definition. The qualified name * is composed of {@link #getPackageName()} '.' {@link #getName()} * * @return the qualified name of this class definition */ String getQualifiedName(); /** * Returns the super class for this class definition. May return {@code * null} if this class definition does not have any superclass. This is the * case if the kind of this class definition is {@link Kind#INTERFACE} or * this class definition is {@link Object}. * * @return the super class for this class definition or {@code null} */ ITypeReference getSuperClass(); /** * Returns the declared interfaces this class definition implements . If no * interfaces are declared, an empty set is returned. * * @return the declared interfaces for this class definition */ Set<ITypeReference> getInterfaces(); /** * Returns the modifiers for this class definition. * * @return the modifiers for this class definition */ Set<Modifier> getModifiers(); /** * Returns all declared methods of this class definition. * * @return all declared methods of this class definition */ Set<IMethod> getMethods(); /** * Returns all declared constructors of this class definition. * * @return all declared constructors of this class definition */ Set<IConstructor> getConstructors(); /** * Returns all declared fields of this class definition. * * @return all declared fields of this class definition */ Set<IField> getFields(); /** * Returns all declared enumeration constant definitions of this class * definition. The returned set may only contain elements if the kind of * this class definition is {@link Kind#ENUM}. * * @return all declared enumeration constants of this class definition */ Set<IEnumConstant> getEnumConstants(); /** * Returns all declared annotation field definitions of this class * definition. The returned set may only contain elements if the kind of * this class definition is {@link Kind#ANNOTATION}. * * @return all declared annotation fields of this class definition */ Set<IAnnotationField> getAnnotationFields(); /** * Returns all classes which where defined in the lexical scope of this * class definition. Anonymous classes are never returned. * * @return all classes which where defined in the lexical scope of this * class definition */ Set<IClassDefinition> getInnerClasses(); }