Class MoreElements
- java.lang.Object
-
- com.google.auto.common.MoreElements
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static ExecutableElementasExecutable(Element element)Returns the givenElementinstance asExecutableElement.static PackageElementasPackage(Element element)Returns the givenElementinstance asPackageElement.static TypeElementasType(Element element)Returns the givenElementinstance asTypeElement.static VariableElementasVariable(Element element)Returns the givenElementinstance asVariableElement.static com.google.common.base.Optional<AnnotationMirror>getAnnotationMirror(Element element, Class<? extends Annotation> annotationClass)Returns anAnnotationMirrorfor the annotation of typeannotationClassonelement, orOptional.absent()if no such annotation exists.static com.google.common.collect.ImmutableSet<ExecutableElement>getLocalAndInheritedMethods(TypeElement type, Elements elementUtils)Returns the set of all non-private methods fromtype, including methods that it inherits from its ancestors.static PackageElementgetPackage(Element element)An alternate implementation ofElements.getPackageOf(javax.lang.model.element.Element)that does not require anElementsinstance.static com.google.common.base.Predicate<Element>hasModifiers(Set<Modifier> modifiers)Returns aPredicatethat can be used to filter elements byModifier.static com.google.common.base.Predicate<Element>hasModifiers(Modifier... modifiers)Returns aPredicatethat can be used to filter elements byModifier.static booleanisAnnotationPresent(Element element, Class<? extends Annotation> annotationClass)Returnstrueiff the given element has anAnnotationMirrorwhose annotation type has the same canonical name as that ofannotationClass.static booleanisType(Element element)Returns true if the givenElementinstance is aTypeElement.
-
-
-
Method Detail
-
getPackage
public static PackageElement getPackage(Element element)
An alternate implementation ofElements.getPackageOf(javax.lang.model.element.Element)that does not require anElementsinstance.- Throws:
NullPointerException- ifelementisnull
-
asPackage
public static PackageElement asPackage(Element element)
Returns the givenElementinstance asPackageElement.This method is functionally equivalent to an
instanceofcheck and a cast, but should always be used over that idiom as instructed in the documentation forElement.- Throws:
NullPointerException- ifelementisnullIllegalArgumentException- ifelementisn't aPackageElement.
-
isType
public static boolean isType(Element element)
Returns true if the givenElementinstance is aTypeElement.This method is functionally equivalent to an
instanceofcheck, but should always be used over that idiom as instructed in the documentation forElement.- Throws:
NullPointerException- ifelementisnull
-
asType
public static TypeElement asType(Element element)
Returns the givenElementinstance asTypeElement.This method is functionally equivalent to an
instanceofcheck and a cast, but should always be used over that idiom as instructed in the documentation forElement.- Throws:
NullPointerException- ifelementisnullIllegalArgumentException- ifelementisn't aTypeElement.
-
asVariable
public static VariableElement asVariable(Element element)
Returns the givenElementinstance asVariableElement.This method is functionally equivalent to an
instanceofcheck and a cast, but should always be used over that idiom as instructed in the documentation forElement.- Throws:
NullPointerException- ifelementisnullIllegalArgumentException- ifelementisn't aVariableElement.
-
asExecutable
public static ExecutableElement asExecutable(Element element)
Returns the givenElementinstance asExecutableElement.This method is functionally equivalent to an
instanceofcheck and a cast, but should always be used over that idiom as instructed in the documentation forElement.- Throws:
NullPointerException- ifelementisnullIllegalArgumentException- ifelementisn't aExecutableElement.
-
isAnnotationPresent
public static boolean isAnnotationPresent(Element element, Class<? extends Annotation> annotationClass)
Returnstrueiff the given element has anAnnotationMirrorwhose annotation type has the same canonical name as that ofannotationClass. This method is a safer alternative to callingElement.getAnnotation(java.lang.Class<A>)and checking fornullas it avoids any interaction with annotation proxies.
-
getAnnotationMirror
public static com.google.common.base.Optional<AnnotationMirror> getAnnotationMirror(Element element, Class<? extends Annotation> annotationClass)
Returns anAnnotationMirrorfor the annotation of typeannotationClassonelement, orOptional.absent()if no such annotation exists. This method is a safer alternative to callingElement.getAnnotation(java.lang.Class<A>)as it avoids any interaction with annotation proxies.
-
hasModifiers
public static com.google.common.base.Predicate<Element> hasModifiers(Modifier... modifiers)
Returns aPredicatethat can be used to filter elements byModifier. The predicate returnstrueif the inputElementhas all of the givenmodifiers, perhaps in addition to others.Here is an example how one could get a List of static methods of a class:
FluentIterable.from(ElementFilter.methodsIn(clazzElement.getEnclosedElements())) .filter(MoreElements.hasModifiers(Modifier.STATIC).toList();
-
hasModifiers
public static com.google.common.base.Predicate<Element> hasModifiers(Set<Modifier> modifiers)
Returns aPredicatethat can be used to filter elements byModifier. The predicate returnstrueif the inputElementhas all of the givenmodifiers, perhaps in addition to others.Here is an example how one could get a List of methods with certain modifiers of a class:
Set<Modifier> modifiers = ...; FluentIterable.from(ElementFilter.methodsIn(clazzElement.getEnclosedElements())) .filter(MoreElements.hasModifiers(modifiers).toList();
-
getLocalAndInheritedMethods
public static com.google.common.collect.ImmutableSet<ExecutableElement> getLocalAndInheritedMethods(TypeElement type, Elements elementUtils)
Returns the set of all non-private methods fromtype, including methods that it inherits from its ancestors. Inherited methods that are overridden are not included in the result. So iftypedefinespublic String toString(), the returned set will contain that method, but not thetoString()method defined byObject.The returned set may contain more than one method with the same signature, if
typeinherits those methods from different ancestors. For example, if it inherits from unrelated interfacesOneandTwowhich each definevoid foo();, and if it does not itself override thefoo()method, then bothOne.foo()andTwo.foo()will be in the returned set.- Parameters:
type- the type whose own and inherited methods are to be returnedelementUtils- anElementsobject, typically returned byprocessingEnv.{@link javax.annotation.processing.ProcessingEnvironment.getElementUtils() getElementUtils()}
-
-