Modifier and Type | Method and Description |
---|---|
static Set<ElementKind> |
classElementKinds()
Deprecated.
|
static @Nullable TypeElement |
enclosingClass(Element elem)
Deprecated.
|
static PackageElement |
enclosingPackage(Element elem)
Returns the innermost package element enclosing the given element.
|
static @Nullable TypeElement |
enclosingTypeElement(Element elem)
Returns the innermost type element that is, or encloses, the given element.
|
static @Nullable VariableElement |
findFieldInType(TypeElement type,
String name)
Returns the field of the class or
null if not found. |
static Set<VariableElement> |
findFieldsInType(TypeElement type,
Collection<String> names)
Returns the elements of the fields whose simple names are
names and are declared in
type . |
static Set<VariableElement> |
findFieldsInTypeOrSuperType(TypeMirror type,
Collection<String> names)
Returns non-private field elements, and side-effects
names to remove them. |
static List<VariableElement> |
getAllFieldsIn(TypeElement type,
Elements elements)
Return all fields declared in the given type or any superclass/interface.
|
static List<ExecutableElement> |
getAllMethodsIn(TypeElement type,
Elements elements)
Return all methods declared in the given type or any superclass/interface.
|
static List<TypeElement> |
getAllSupertypes(TypeElement type,
ProcessingEnvironment env)
Get all the supertypes of a given type, including the type itself.
|
static List<TypeElement> |
getAllTypeElementsIn(TypeElement type)
Return all nested/inner classes/interfaces declared in the given type.
|
static @BinaryName String |
getBinaryName(TypeElement te)
Returns the binary name of the given type.
|
static @BinaryName String |
getEnclosingClassName(ExecutableElement executableElement)
Returns the binary name of the class enclosing
executableElement . |
static @BinaryName String |
getEnclosingClassName(VariableElement variableElement)
Returns the binary name of the class enclosing
variableElement . |
static Set<? extends ExecutableElement> |
getOverriddenMethods(ExecutableElement m,
Types types)
Returns the methods that are overriden or implemented by a given method.
|
static @Nullable Name |
getQualifiedClassName(Element element)
Returns the qualified name of the innermost class enclosing the provided
Element . |
static String |
getQualifiedName(Element elt)
Returns a verbose name that identifies the element.
|
static CharSequence |
getSimpleNameOrDescription(ExecutableElement element)
Returns a user-friendly name for the given method.
|
static String |
getSimpleSignature(ExecutableElement element)
Returns the canonical representation of the method declaration, which contains simple names of
the types only.
|
static String |
getSourceFilePath(TypeElement element)
Returns the path to the source file containing
element , which must be from source code. |
static @Nullable TypeElement |
getSuperClass(TypeElement typeElt)
Returns a type's superclass, or null if it does not have a superclass (it is object or an
interface, or the superclass is not on the classpath).
|
static List<TypeElement> |
getSuperTypes(TypeElement type,
Elements elements)
Determine all type elements for the supertypes of the given type element.
|
static TypeMirror |
getType(Element element)
Returns the
TypeMirror for usage of Element as a value. |
static TypeElement |
getTypeElement(ProcessingEnvironment processingEnv,
Class<?> clazz)
Returns the TypeElement for the given class.
|
static boolean |
hasAnnotation(Element element,
String annotName)
Given an annotation name, return true if the element has the annotation of that name.
|
static boolean |
hasReceiver(Element element)
Does the given element need a receiver for accesses? For example, an access to a local variable
does not require a receiver.
|
static boolean |
inSameClass(Element e1,
Element e2)
Returns true if the two elements are in the same class.
|
static boolean |
isBindingVariable(Element element)
Return true if the element is a binding variable.
|
static boolean |
isClassElement(Element element)
Deprecated.
|
static boolean |
isCompileTimeConstant(Element elt)
Returns true if the element is a reference to a compile-time constant.
|
static boolean |
isEffectivelyFinal(Element element)
Returns true if the element is a effectively final element.
|
static boolean |
isElementFromByteCode(@Nullable Element elt)
Returns true if the element is declared in ByteCode.
|
static boolean |
isElementFromSourceCode(@Nullable Element element)
Checks whether a given element came from a source file.
|
static boolean |
isError(Element element)
Returns true if
element is "com.sun.tools.javac.comp.Resolve$SymbolNotFoundError". |
static boolean |
isFinal(Element element)
Returns true if the element is a final element: a final field, final method, or final class.
|
static boolean |
isMethod(ExecutableElement questioned,
ExecutableElement method,
ProcessingEnvironment env)
Returns true if the given element is, or overrides, method.
|
static boolean |
isObject(TypeElement element)
Check if the element is an element for 'java.lang.Object'
|
static boolean |
isStatic(Element element)
Returns true if the element is a static element: whether it is a static field, static method,
or static class.
|
static boolean |
isString(TypeElement element)
Check if the element is an element for 'java.lang.String'
|
static boolean |
isTypeDeclaration(Element elt)
Return true if the element is a type declaration.
|
static boolean |
isTypeElement(Element element)
Is the given element kind a type, i.e., a class, enum, interface, or annotation type.
|
static boolean |
matchesElement(ExecutableElement method,
String methodName,
Class<?>... parameters)
Check that a method Element matches a signature.
|
static @Nullable PackageElement |
parentPackage(PackageElement elem,
Elements e)
Returns the "parent" package element for the given package element.
|
static @Nullable TypeElement |
strictEnclosingTypeElement(Element elem)
Returns the innermost type element enclosing the given element, that is different from the
element itself.
|
static TypeElement |
toplevelEnclosingTypeElement(Element element)
Returns the top-level type element that contains
element . |
static Set<ElementKind> |
typeElementKinds()
Return the set of kinds that represent classes.
|
@Deprecated public static @Nullable TypeElement enclosingClass(Element elem)
enclosingTypeElement(javax.lang.model.element.Element)
elem
- the enclosed element of a classelem
public static @Nullable TypeElement enclosingTypeElement(Element elem)
Note that in this code:
class Outer {
static class Inner { }
}
Inner
has no enclosing type, but this method returns Outer
.elem
- the enclosed element of a classelem
is
not, and is not enclosed by, a type elementpublic static @Nullable TypeElement strictEnclosingTypeElement(Element elem)
enclosingTypeElement(javax.lang.model.element.Element)
returns its argument if the argument
is a type element.elem
- the enclosed element of a classelem
public static TypeElement toplevelEnclosingTypeElement(Element element)
element
.element
- the element whose enclosing tye element to findelement
that isn't contained in another classpublic static @BinaryName String getEnclosingClassName(ExecutableElement executableElement)
executableElement
.executableElement
- the ExecutableElementexecutableElement
public static @BinaryName String getEnclosingClassName(VariableElement variableElement)
variableElement
.variableElement
- the VariableElementvariableElement
public static PackageElement enclosingPackage(Element elem)
Elements.getPackageOf(Element)
. Returns the element itself if it is a
package.elem
- the enclosed element of a packagepublic static @Nullable PackageElement parentPackage(PackageElement elem, Elements e)
Note that packages are not enclosed within each other, we have to manually climb the namespaces. Calling "enclosingPackage" on a package element returns the package element itself again.
elem
- the package to start fromnull
public static boolean isStatic(Element element)
public static boolean isFinal(Element element)
public static boolean isEffectivelyFinal(Element element)
public static TypeMirror getType(Element element)
TypeMirror
for usage of Element as a value. It returns the return type of a
method element, the class type of a constructor, or simply the type mirror of the element
itself.element
- the element whose type to obtainpublic static @Nullable Name getQualifiedClassName(Element element)
Element
.element
- an element enclosed by a class, or a TypeElement
Name
of the innermost class enclosing the elementpublic static String getQualifiedName(Element elt)
elt
- the element whose name to obtainpublic static @BinaryName String getBinaryName(TypeElement te)
te
- a typepublic static String getSimpleSignature(ExecutableElement element)
element
- a method declarationpublic static CharSequence getSimpleNameOrDescription(ExecutableElement element)
"<init>"
or "<clinit>"
as ExecutableElement.getSimpleName() does.element
- a method declarationpublic static boolean isObject(TypeElement element)
element
- the type elementpublic static boolean isString(TypeElement element)
element
- the type elementpublic static boolean isCompileTimeConstant(Element elt)
elt
- an elementpublic static boolean isElementFromSourceCode(@Nullable Element element)
By contrast, isElementFromByteCode(Element)
returns true if there is a
classfile for the given element, even if there is also a source file.
element
- the element to check, or nullpublic static boolean isElementFromByteCode(@Nullable Element elt)
elt
- some elementpublic static String getSourceFilePath(TypeElement element)
element
, which must be from source code.element
- the type element to look atelement
public static @Nullable VariableElement findFieldInType(TypeElement type, String name)
null
if not found.type
- TypeElement to searchname
- name of a fieldpublic static Set<VariableElement> findFieldsInType(TypeElement type, Collection<String> names)
names
and are declared in
type
.
If a field isn't declared in type
, its element isn't included in the returned set.
If none of the fields is declared in type
, the empty set is returned.
type
- where to look for fieldsnames
- simple names of fields that might be declared in type
names
and are declared in
type
public static Set<VariableElement> findFieldsInTypeOrSuperType(TypeMirror type, Collection<String> names)
names
to remove them. For every
field name in names
that is declared in type
or a supertype, add its element to
the returned set and remove it from names
.
When this routine returns, the combination of the return value and names
has the
same cardinality, and represents the same fields, as names
did when the method was
called.
type
- where to look for fieldsnames
- simple names of fields that might be declared in type
or a supertype
(Names that are found are removed from this list.)VariableElement
s for non-private fields that are declared in type
whose simple names were in names
when the method was called.public static boolean isError(Element element)
element
is "com.sun.tools.javac.comp.Resolve$SymbolNotFoundError".element
- the element to testelement
is "com.sun.tools.javac.comp.Resolve$SymbolNotFoundError"public static boolean hasReceiver(Element element)
element
- the element to testpublic static @Nullable TypeElement getSuperClass(TypeElement typeElt)
typeElt
- a type elementtypeElt
public static List<TypeElement> getSuperTypes(TypeElement type, Elements elements)
TODO: can we learn from the implementation of com.sun.tools.javac.model.JavacElements.getAllMembers(TypeElement)?
type
- the type whose supertypes to returnelements
- the Element utilitiestype
public static List<VariableElement> getAllFieldsIn(TypeElement type, Elements elements)
TODO: should this use javax.lang.model.util.Elements.getAllMembers(TypeElement) instead of our own getSuperTypes?
type
- the type whose fields to returnelements
- the Element utilitiestype
public static List<ExecutableElement> getAllMethodsIn(TypeElement type, Elements elements)
TODO: should this use javax.lang.model.util.Elements.getAllMembers(TypeElement) instead of our own getSuperTypes?
type
- the type whose methods to returnelements
- the Element utilitiestype
public static List<TypeElement> getAllTypeElementsIn(TypeElement type)
type
- a typetype
@Deprecated public static Set<ElementKind> classElementKinds()
typeElementKinds()
public static Set<ElementKind> typeElementKinds()
@Deprecated public static boolean isClassElement(Element element)
isTypeElement(javax.lang.model.element.Element)
element
- the element to testpublic static boolean isTypeElement(Element element)
element
- the element to testpublic static boolean isTypeDeclaration(Element elt)
elt
- the element to testpublic static boolean isBindingVariable(Element element)
Note: This is to conditionally support Java 15 instanceof pattern matching. When available,
this should use ElementKind.BINDING_VARIABLE
directly.
element
- the element to testpublic static boolean matchesElement(ExecutableElement method, String methodName, Class<?>... parameters)
Note: Matching the receiver type must be done elsewhere as the Element receiver type is only populated when annotated.
method
- the method Element to be testedmethodName
- the goal method nameparameters
- the goal formal parameter Classespublic static boolean isMethod(ExecutableElement questioned, ExecutableElement method, ProcessingEnvironment env)
public static boolean hasAnnotation(Element element, String annotName)
It is more efficient to use Element#getAnnotation(Class)
, but note that both methods
ignore types from annotation files, such as stub or ajava files.
To include types from annotation files, use AnnotatedTypeFactory#fromElement
or
AnnotatedTypeFactory#getDeclAnnotations
.
element
- the elementannotName
- name of the annotationpublic static TypeElement getTypeElement(ProcessingEnvironment processingEnv, Class<?> clazz)
processingEnv
- the processing environmentclazz
- a classpublic static List<TypeElement> getAllSupertypes(TypeElement type, ProcessingEnvironment env)
type
- a typeenv
- the processing environmentpublic static Set<? extends ExecutableElement> getOverriddenMethods(ExecutableElement m, Types types)
m
- a methodtypes
- the type utilitiesm
overrides or implements