public class Key<T>
extends java.lang.Object
For example, Key.get(Service.class, Transactional.class)
will
match:
@Inject public void setService( @Transactional Service service) { ... }
Key
supports generic types via subclassing just like TypeLiteral
.
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.
Modifier | Constructor and Description |
---|---|
protected |
Key()
Constructs a new key.
|
protected |
Key(java.lang.annotation.Annotation annotation)
Constructs a new key.
|
protected |
Key(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Constructs a new key.
|
Modifier and Type | Method and 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() |
protected Key(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
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) {}
.
protected Key(java.lang.annotation.Annotation annotation)
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()) {}
.
protected Key()
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>() {}
.
public final TypeLiteral<T> getTypeLiteral()
public final java.lang.Class<? extends java.lang.annotation.Annotation> getAnnotationType()
public final java.lang.annotation.Annotation getAnnotation()
public final boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public final int hashCode()
hashCode
in class java.lang.Object
public final java.lang.String toString()
toString
in class java.lang.Object
public static <T> Key<T> get(java.lang.Class<T> type)
public static <T> Key<T> get(java.lang.Class<T> type, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
public static <T> Key<T> get(java.lang.Class<T> type, java.lang.annotation.Annotation annotation)
public static Key<?> get(java.lang.reflect.Type type)
public static Key<?> get(java.lang.reflect.Type type, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
public static Key<?> get(java.lang.reflect.Type type, java.lang.annotation.Annotation annotation)
public static <T> Key<T> get(TypeLiteral<T> typeLiteral)
public static <T> Key<T> get(TypeLiteral<T> typeLiteral, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
public static <T> Key<T> get(TypeLiteral<T> typeLiteral, java.lang.annotation.Annotation annotation)