Class Key<T>
- java.lang.Object
-
- org.elasticsearch.common.inject.Key<T>
-
public class Key<T> extends java.lang.Object
Binding key consisting of an injection type and an optional annotation. Matches the type and annotation at a point of injection.For example,
Key.get(Service.class, Transactional.class)
will match:@Inject public void setService(@Transactional Service service) { ... }
Key
supports generic types via subclassing just likeTypeLiteral
.Keys do not differentiate between primitive types (int, char, etc.) and their corresponding wrapper types (Integer, Character, etc.). Primitive types will be replaced with their wrapper types when keys are created.
-
-
Method Summary
Modifier and Type Method Description boolean
equals(java.lang.Object o)
static <T> Key<T>
get(java.lang.Class<T> type)
Gets a key for an injection type.static <T> Key<T>
get(java.lang.Class<T> type, java.lang.annotation.Annotation annotation)
Gets a key for an injection type and an annotation.static <T> Key<T>
get(java.lang.Class<T> type, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Gets a key for an injection type and an annotation type.static Key<?>
get(java.lang.reflect.Type type)
Gets a key for an injection type.static Key<?>
get(java.lang.reflect.Type type, java.lang.annotation.Annotation annotation)
Gets a key for an injection type and an annotation.static Key<?>
get(java.lang.reflect.Type type, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Gets a key for an injection type and an annotation type.static <T> Key<T>
get(TypeLiteral<T> typeLiteral)
Gets a key for an injection type.static <T> Key<T>
get(TypeLiteral<T> typeLiteral, java.lang.annotation.Annotation annotation)
Gets a key for an injection type and an annotation.static <T> Key<T>
get(TypeLiteral<T> typeLiteral, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Gets a key for an injection type and an annotation type.java.lang.annotation.Annotation
getAnnotation()
Gets the annotation.java.lang.Class<? extends java.lang.annotation.Annotation>
getAnnotationType()
Gets the annotation type.TypeLiteral<T>
getTypeLiteral()
Gets the key type.int
hashCode()
java.lang.String
toString()
-
-
-
Constructor Detail
-
Key
protected Key(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Constructs a new key. Derives the type from this class's type parameter.Clients create an empty anonymous subclass. Doing so embeds the type parameter in the anonymous class's type hierarchy so we can reconstitute it at runtime despite erasure.
Example usage for a binding of type
Foo
annotated with@Bar
:new Key<Foo>(Bar.class) {}
.
-
Key
protected Key(java.lang.annotation.Annotation annotation)
Constructs a new key. Derives the type from this class's type parameter.Clients create an empty anonymous subclass. Doing so embeds the type parameter in the anonymous class's type hierarchy so we can reconstitute it at runtime despite erasure.
Example usage for a binding of type
Foo
annotated with@Bar
:new Key<Foo>(new Bar()) {}
.
-
Key
protected Key()
Constructs a new key. Derives the type from this class's type parameter.Clients create an empty anonymous subclass. Doing so embeds the type parameter in the anonymous class's type hierarchy so we can reconstitute it at runtime despite erasure.
Example usage for a binding of type
Foo
:new Key<Foo>() {}
.
-
-
Method Detail
-
getTypeLiteral
public final TypeLiteral<T> getTypeLiteral()
Gets the key type.
-
getAnnotationType
public final java.lang.Class<? extends java.lang.annotation.Annotation> getAnnotationType()
Gets the annotation type.
-
getAnnotation
public final java.lang.annotation.Annotation getAnnotation()
Gets the annotation.
-
equals
public final boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public final int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public final java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
get
public static <T> Key<T> get(java.lang.Class<T> type)
Gets a key for an injection type.
-
get
public static <T> Key<T> get(java.lang.Class<T> type, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Gets a key for an injection type and an annotation type.
-
get
public static <T> Key<T> get(java.lang.Class<T> type, java.lang.annotation.Annotation annotation)
Gets a key for an injection type and an annotation.
-
get
public static Key<?> get(java.lang.reflect.Type type)
Gets a key for an injection type.
-
get
public static Key<?> get(java.lang.reflect.Type type, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Gets a key for an injection type and an annotation type.
-
get
public static Key<?> get(java.lang.reflect.Type type, java.lang.annotation.Annotation annotation)
Gets a key for an injection type and an annotation.
-
get
public static <T> Key<T> get(TypeLiteral<T> typeLiteral)
Gets a key for an injection type.
-
get
public static <T> Key<T> get(TypeLiteral<T> typeLiteral, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Gets a key for an injection type and an annotation type.
-
get
public static <T> Key<T> get(TypeLiteral<T> typeLiteral, java.lang.annotation.Annotation annotation)
Gets a key for an injection type and an annotation.
-
-