public class ElementUtils extends Object
Element
s.Modifier and Type | Method and Description |
---|---|
static TypeElement |
enclosingClass(Element elem)
Returns the innermost type element enclosing the given element.
|
static PackageElement |
enclosingPackage(Element elem)
Returns the innermost package element enclosing 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> |
getAllTypeElementsIn(TypeElement type)
Return all nested/inner classes/interfaces declared in the given type.
|
static @Nullable Name |
getQualifiedClassName(Element element)
Returns the qualified name of the inner most class enclosing the provided
Element |
static String |
getSimpleName(ExecutableElement element)
Returns the canonical representation of the method declaration, which contains simple names
of the types only.
|
static List<TypeElement> |
getSuperTypes(TypeElement type,
Elements elements)
Determine all type elements for the classes and interfaces referenced (directly or
indirectly) in the extends/implements clauses of the given type element.
|
static TypeMirror |
getType(Element element)
Returns the
TypeMirror for usage of Element as a value. |
static String |
getVerboseName(Element elt)
Returns a verbose name that identifies the element.
|
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 |
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(Element elt)
Returns true if the element is declared in ByteCode.
|
static boolean |
isError(Element element) |
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 |
isTypeDeclaration(Element elt) |
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.
|
public static TypeElement enclosingClass(Element elem)
elem
- the enclosed element of a classpublic 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.public 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 getVerboseName(Element elt)
public static String getSimpleName(ExecutableElement element)
public static boolean isObject(TypeElement element)
element
- the type elementpublic static boolean isCompileTimeConstant(Element elt)
public static boolean isElementFromByteCode(Element elt)
public static @Nullable VariableElement findFieldInType(TypeElement type, String name)
null
if not found.public 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"public static boolean hasReceiver(Element element)
element
- the element to testpublic static List<TypeElement> getSuperTypes(TypeElement type, Elements elements)
TODO: can we learn from the implementation of com.sun.tools.javac.model.JavacElements.getAllMembers(TypeElement)?
public static List<VariableElement> getAllFieldsIn(TypeElement type, Elements elements)
public static List<ExecutableElement> getAllMethodsIn(TypeElement type, Elements elements)
public static List<TypeElement> getAllTypeElementsIn(TypeElement type)
public static boolean isTypeDeclaration(Element elt)
public 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 ElementmethodName
- the name of the methodparameters
- the formal parameters' Classespublic static boolean isMethod(ExecutableElement questioned, ExecutableElement method, ProcessingEnvironment env)