Class Annotations


  • public class Annotations
    extends Object
    Annotation utilities.
    Author:
    crazybob@google.com (Bob Lee)
    • Constructor Detail

      • Annotations

        public Annotations()
    • Method Detail

      • isMarker

        public static boolean isMarker​(Class<? extends Annotation> annotationType)
        Returns true if the given annotation type has no attributes.
      • isAllDefaultMethods

        public static boolean isAllDefaultMethods​(Class<? extends Annotation> annotationType)
      • generateAnnotation

        public static <T extends Annotation> T generateAnnotation​(Class<T> annotationType)
        Generates an Annotation for the annotation class. Requires that the annotation is all optionals.
      • isRetainedAtRuntime

        public static boolean isRetainedAtRuntime​(Class<? extends Annotation> annotationType)
        Returns true if the given annotation is retained at runtime.
      • findScopeAnnotation

        public static Class<? extends Annotation> findScopeAnnotation​(Errors errors,
                                                                      Class<?> implementation)
        Returns the scope annotation on type, or null if none is specified.
      • findScopeAnnotation

        public static Class<? extends Annotation> findScopeAnnotation​(Errors errors,
                                                                      Annotation[] annotations)
        Returns the scoping annotation, or null if there isn't one.
      • memberValueString

        public static String memberValueString​(String value)
        Returns value, quoted if annotation implementations quote their member values. In Java 9, annotations quote their string members.
      • memberValueString

        public static String memberValueString​(String memberName,
                                               Object value)
        Returns string representation of the annotation memeber.

        The value of the member is prefixed with `memberName=` unless the runtime omits the member name. The value of the member is quoted if annotation implementations quote their member values and the value type is String.

        In Java 9, annotations quote their string members and in Java 15, the member name is omitted.

      • isScopeAnnotation

        public static boolean isScopeAnnotation​(Class<? extends Annotation> annotationType)
      • checkForMisplacedScopeAnnotations

        public static void checkForMisplacedScopeAnnotations​(Class<?> type,
                                                             Object source,
                                                             Errors errors)
        Adds an error if there is a misplaced annotations on type. Scoping annotations are not allowed on abstract classes or interfaces.
      • findBindingAnnotation

        public static Annotation findBindingAnnotation​(Errors errors,
                                                       Member member,
                                                       Annotation[] annotations)
        Returns the binding annotation on member, or null if there isn't one.
      • isBindingAnnotation

        public static boolean isBindingAnnotation​(Class<? extends Annotation> annotationType)
        Returns true if annotations of the specified type are binding annotations.
      • canonicalizeIfNamed

        public static Annotation canonicalizeIfNamed​(Annotation annotation)
        If the annotation is an instance of javax.inject.Named, canonicalizes to com.google.guice.name.Named. Returns the given annotation otherwise.
      • canonicalizeIfNamed

        public static Class<? extends Annotation> canonicalizeIfNamed​(Class<? extends Annotation> annotationType)
        If the annotation is the class javax.inject.Named, canonicalizes to com.google.guice.name.Named. Returns the given annotation class otherwise.
      • nameOf

        public static String nameOf​(Key<?> key)
        Returns the name the binding should use. This is based on the annotation. If the annotation has an instance and is not a marker annotation, we ask the annotation for its toString. If it was a marker annotation or just an annotation type, we use the annotation's name. Otherwise, the name is the empty string.