001: /*
002: * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025:
026: package javax.lang.model.element;
027:
028: import java.util.List;
029: import javax.lang.model.util.Types;
030: import javax.lang.model.type.*;
031:
032: /**
033: * Represents a method, constructor, or initializer (static or
034: * instance) of a class or interface, including annotation type
035: * elements.
036: *
037: * @author Joseph D. Darcy
038: * @author Scott Seligman
039: * @author Peter von der Ahé
040: * @version 1.10 07/05/05
041: * @see ExecutableType
042: * @since 1.6
043: */
044: public interface ExecutableElement extends Element {
045: /**
046: * Returns the formal type parameters of this executable
047: * in declaration order.
048: *
049: * @return the formal type parameters, or an empty list
050: * if there are none
051: */
052: List<? extends TypeParameterElement> getTypeParameters();
053:
054: /**
055: * Returns the return type of this executable.
056: * Returns a {@link NoType} with kind {@link TypeKind#VOID VOID}
057: * if this executable is not a method, or is a method that does not
058: * return a value.
059: *
060: * @return the return type of this executable
061: */
062: TypeMirror getReturnType();
063:
064: /**
065: * Returns the formal parameters of this executable.
066: * They are returned in declaration order.
067: *
068: * @return the formal parameters,
069: * or an empty list if there are none
070: */
071: List<? extends VariableElement> getParameters();
072:
073: /**
074: * Returns {@code true} if this method or constructor accepts a variable
075: * number of arguments and returns {@code false} otherwise.
076: *
077: * @return {@code true} if this method or constructor accepts a variable
078: * number of arguments and {@code false} otherwise
079: */
080: boolean isVarArgs();
081:
082: /**
083: * Returns the exceptions and other throwables listed in this
084: * method or constructor's {@code throws} clause in declaration
085: * order.
086: *
087: * @return the exceptions and other throwables listed in the
088: * {@code throws} clause, or an empty list if there are none
089: */
090: List<? extends TypeMirror> getThrownTypes();
091:
092: /**
093: * Returns the default value if this executable is an annotation
094: * type element. Returns {@code null} if this method is not an
095: * annotation type element, or if it is an annotation type element
096: * with no default value.
097: *
098: * @return the default value, or {@code null} if none
099: */
100: AnnotationValue getDefaultValue();
101: }
|