Copyright (c) 2000, 2013 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation Stephan Herrmann - Contribution for bug 186342 - [compiler][null] Using annotations for null checking Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for Bug 407191 - [1.8] Binary access support for type annotations
/******************************************************************************* * Copyright (c) 2000, 2013 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation * Stephan Herrmann - Contribution for bug 186342 - [compiler][null] Using annotations for null checking * Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for * Bug 407191 - [1.8] Binary access support for type annotations *******************************************************************************/
package org.eclipse.jdt.internal.compiler.env; // clinit methods (synthetics too?) can be returned from IBinaryType>>getMethods() // BUT do not have to be... the compiler will ignore them when building the binding. // The synthetic argument of a member type's constructor (i.e. the first arg of a non-static // member type) is also ignored by the compiler, BUT in this case it must be included // in the constructor's signature. public interface IBinaryMethod extends IGenericMethod {
Answer the runtime visible and invisible annotations for this method or null if none.
/** * Answer the runtime visible and invisible annotations for this method or null if none. */
IBinaryAnnotation[] getAnnotations();
Return ClassSignature for a Class Class. Return Constant for compile-time constant of primitive type, as well as String literals. Return EnumConstantSignature if value is an enum constant. Return IBinaryAnnotation for annotation type. Return Object[] for array type.
Returns:default value of this annotation method
/** * Return {@link ClassSignature} for a Class {@link java.lang.Class}. * Return {@link org.eclipse.jdt.internal.compiler.impl.Constant} for compile-time constant of primitive type, as well as String literals. * Return {@link EnumConstantSignature} if value is an enum constant. * Return {@link IBinaryAnnotation} for annotation type. * Return {@link Object}[] for array type. * * @return default value of this annotation method */
Object getDefaultValue();
Answer the resolved names of the exception types in the class file format as specified in section 4.2 of the Java 2 VM spec or null if the array is empty. For example, java.lang.String is java/lang/String.
/** * Answer the resolved names of the exception types in the * class file format as specified in section 4.2 of the Java 2 VM spec * or null if the array is empty. * * For example, java.lang.String is java/lang/String. */
char[][] getExceptionTypeNames();
Answer the receiver's MethodSignature, which describes the type parameters, parameter types, return type, and exception types as specified in "4.7.9.1 Signatures" of the Java SE 8 VM spec.
/** * Answer the receiver's MethodSignature, which describes the type parameters, * parameter types, return type, and exception types * as specified in "4.7.9.1 Signatures" of the Java SE 8 VM spec. */
char[] getGenericSignature();
Answer the receiver's method descriptor which describes the parameter & return types as specified in section 4.4.3 of the Java 2 VM spec. For example: - int foo(String) is (Ljava/lang/String;)I - Object[] foo(int) is (I)[Ljava/lang/Object;
/** * Answer the receiver's method descriptor which describes the parameter & * return types as specified in section 4.4.3 of the Java 2 VM spec. * * For example: * - int foo(String) is (Ljava/lang/String;)I * - Object[] foo(int) is (I)[Ljava/lang/Object; */
char[] getMethodDescriptor();
Answer the annotations on the indexth parameter or null if none
Params:
  • index – the index of the parameter of interest
  • classFileName – (file) name of the declaring class for error reporting
/** * Answer the annotations on the <code>index</code>th parameter or null if none * @param index the index of the parameter of interest * @param classFileName (file) name of the declaring class for error reporting */
IBinaryAnnotation[] getParameterAnnotations(int index, char[] classFileName);
Answer the number of parameter annotations that can be retrieved using getParameterAnnotations(int, char[]).
Returns:one beyond the highest legal argument to getParameterAnnotations(int, char[]).
/** * Answer the number of parameter annotations that can be retrieved * using {@link #getParameterAnnotations(int, char[])}. * @return one beyond the highest legal argument to {@link #getParameterAnnotations(int, char[])}. */
int getAnnotatedParametersCount();
Answer the name of the method. For a constructor, answer & for a clinit method.
/** * Answer the name of the method. * * For a constructor, answer <init> & <clinit> for a clinit method. */
char[] getSelector();
Answer the tagbits set according to the bits for annotations.
/** * Answer the tagbits set according to the bits for annotations. */
long getTagBits();
Answer whether the receiver represents a class initializer method.
/** * Answer whether the receiver represents a class initializer method. */
boolean isClinit();
Answer the type annotations on this method.
/** * Answer the type annotations on this method. */
IBinaryTypeAnnotation[] getTypeAnnotations(); }