-
- Type Parameters:
T
- the required bean type
- All Known Implementing Classes:
- CDI
public interface Instance<T> extends Iterable<T>, Provider<T>
Allows the application to dynamically obtain instances of beans with a specified combination of required type and qualifiers.
In certain situations, injection is not the most convenient way to obtain a contextual reference. For example, it may not be used when:
- the bean type or qualifiers vary dynamically at runtime, or
- depending upon the deployment, there may be no bean which satisfies the type and qualifiers, or
- we would like to iterate over all beans of a certain type.
In these situations, an instance of the Instance may be injected:
@Inject Instance<PaymentProcessor> paymentProcessor;
Any combination of qualifiers may be specified at the injection point:
@Inject @PayBy(CHEQUE) Instance<PaymentProcessor> chequePaymentProcessor;
Or, the
@Any
qualifier may be used, allowing the application to specify qualifiers dynamically:@Inject @Any Instance<PaymentProcessor> anyPaymentProcessor;
Finally, the
@New
qualifier may be used, allowing the application to obtain a@New
qualified bean:@Inject @New(ChequePaymentProcessor.class) Instance<PaymentProcessor> chequePaymentProcessor;
For an injected Instance:
- the required type is the type parameter specified at the injection point, and
- the required qualifiers are the qualifiers specified at the injection point.
The inherited
Provider.get()
method returns a contextual references for the unique bean that matches the required type and required qualifiers and is eligible for injection into the class into which the parent Instance was injected, or throws anUnsatisfiedResolutionException
orAmbiguousResolutionException
.PaymentProcessor pp = chequePaymentProcessor.get();
The inherited
Iterable.iterator()
method returns an iterator over contextual references for beans that match the required type and required qualifiers and are eligible for injection into the class into which the parent Instance was injected.for (PaymentProcessor pp : anyPaymentProcessor) pp.test();
- Author:
- Gavin King
- See Also:
Provider.get()
,Iterable.iterator()
,AnnotationLiteral
,TypeLiteral
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method and Description void
destroy(T instance)
Ondestroy(Object)
being called, the container destroys the instance if the active context object for the scope type of the bean supports destroying bean instances.boolean
isAmbiguous()
Determines if there is more than one bean that matches the required type and qualifiers and is eligible for injection into the class into which the parent Instance was injected.boolean
isUnsatisfied()
Determines if there is no bean that matches the required type and qualifiers and is eligible for injection into the class into which the parent Instance was injected.Instance<T>
select(Annotation... qualifiers)
Obtains a child Instance for the given additional required qualifiers.<U extends T>
Instance<U>select(Class<U> subtype, Annotation... qualifiers)
Obtains a child Instance for the given required type and additional required qualifiers.<U extends T>
Instance<U>select(TypeLiteral<U> subtype, Annotation... qualifiers)
Obtains a child Instance for the given required type and additional required qualifiers.-
Methods inherited from interface java.lang.Iterable
forEach, iterator, spliterator
-
Methods inherited from interface javax.inject.Provider
get
-
-
-
-
Method Detail
-
select
Instance<T> select(Annotation... qualifiers)
Obtains a child Instance for the given additional required qualifiers.
- Parameters:
qualifiers
- the additional required qualifiers- Returns:
- the child Instance
- Throws:
IllegalArgumentException
- if passed two instances of the same qualifier type, or an instance of an annotation that is not a qualifier type
-
select
<U extends T> Instance<U> select(Class<U> subtype, Annotation... qualifiers)
Obtains a child Instance for the given required type and additional required qualifiers.
- Type Parameters:
U
- the required type- Parameters:
subtype
- aClass
representing the required typequalifiers
- the additional required qualifiers- Returns:
- the child Instance
- Throws:
IllegalArgumentException
- if passed two instances of the same qualifier type, or an instance of an annotation that is not a qualifier type
-
select
<U extends T> Instance<U> select(TypeLiteral<U> subtype, Annotation... qualifiers)
Obtains a child Instance for the given required type and additional required qualifiers.
- Type Parameters:
U
- the required type- Parameters:
subtype
- aTypeLiteral
representing the required typequalifiers
- the additional required qualifiers- Returns:
- the child Instance
- Throws:
IllegalArgumentException
- if passed two instances of the same qualifier type, or an instance of an annotation that is not a qualifier type
-
isUnsatisfied
boolean isUnsatisfied()
Determines if there is no bean that matches the required type and qualifiers and is eligible for injection into the class into which the parent Instance was injected.
- Returns:
- true if there is no bean that matches the required type and qualifiers and is eligible for injection into the class into which the parent Instance was injected, or false otherwise.
-
isAmbiguous
boolean isAmbiguous()
Determines if there is more than one bean that matches the required type and qualifiers and is eligible for injection into the class into which the parent Instance was injected.
- Returns:
- true if there is more than one bean that matches the required type and qualifiers and is eligible for injection into the class into which the parent Instance was injected, or false otherwise.
-
destroy
void destroy(T instance)
On
destroy(Object)
being called, the container destroys the instance if the active context object for the scope type of the bean supports destroying bean instances. All normal scoped built-in contexts support destroying bean instances.The instance passed should either be a dependent scoped bean instance, or the client proxy for a normal scoped bean instance.
- Parameters:
instance
- the instance to destroy- Throws:
UnsupportedOperationException
- if the active context object for the scope type of the bean does not support destroying bean instances- Since:
- 1.1
-
-
Nederlandse vertaling
U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.
Bij voorbaat dank.
Document heeft de 11/06/2005 gemaakt, de laatste keer de 18/08/2025 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/java-api-javaee-rf-javax/enterprise/inject/Instance.html
De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.
Referenties
Deze verwijzingen en links verwijzen naar documenten die geraadpleegd zijn tijdens het schrijven van deze pagina, of die aanvullende informatie kunnen geven, maar de auteurs van deze bronnen kunnen niet verantwoordelijk worden gehouden voor de inhoud van deze pagina.
De auteur van deze site is als enige verantwoordelijk voor de manier waarop de verschillende concepten, en de vrijheden die met de referentiewerken worden genomen, hier worden gepresenteerd. Vergeet niet dat u meerdere broninformatie moet doorgeven om het risico op fouten te verkleinen.