Appel local
public
class
InvocationLocal
extends Object
java.lang.Object | |
↳ | com.android.tradefed.invoker.logger.InvocationLocal<T> |
Cette classe fournit des variables dont la portée est définie au niveau de l'appel.
Le mécanisme fonctionne de manière semblable à ThreadLocal
. Ces variables diffèrent de leurs homologues normaux en ce sens que le code d'une invocation qui y accède (via sa méthode get
) possède sa propre copie de la variable, initialisée indépendamment. Les instances InvocationLocal
sont généralement des champs statiques privés dans les classes qui souhaitent associer un état à une invocation.
Chaque appel est associé à une copie d'une variable à l'échelle de l'appel tant que l'appel est en cours et que l'instance InvocationLocal
est accessible. Une fois une invocation terminée, toutes ses copies d'instances locales d'invocation sont soumises à la collecte des déchets (sauf si d'autres références à ces copies existent).
Notez que contrairement aux instances ThreadLocal
qui ne sont plus référencées pendant que l'appel est en cours, elles ne sont pas collectées. La création d'instances locales ou non statiques n'est donc pas recommandée, car elles pourraient croître sans limites.
Avertissement: Utilisez cette classe avec parcimonie, car les variables locales d'appel sont des variables globales magnifiées qui présentent de nombreux écueils similaires.
Résumé
Constructeurs publics | |
---|---|
InvocationLocal()
|
Méthodes publiques | |
---|---|
final
T
|
get()
Renvoie la copie de cette variable locale d'appel de l'appel en cours d'exécution. |
Méthodes protégées | |
---|---|
T
|
initialValue()
Renvoie la "valeur initiale" de l'appel actuel pour cette variable locale d'appel. |
Constructeurs publics
InvocationLocal
public InvocationLocal ()
Méthodes publiques
get
public final T get ()
Renvoie la copie de l'appel en cours d'exécution de cette variable d'appel locale. Si la variable n'a aucune valeur pour l'appel en cours, elle est d'abord initialisée avec la valeur renvoyée par un appel à la méthode initialValue()
.
Renvoie | |
---|---|
T |
Copie de cette invocation locale de l'appel en cours d'exécution. |
Méthodes protégées
initialValue
protected T initialValue ()
Renvoie la "valeur initiale" de l'appel actuel pour cette variable d'appel locale. Cette méthode est appelée la première fois que le code exécuté dans le contexte de l'appel accède à la variable avec la méthode get()
. Cette méthode ne peut être appelée qu'une seule fois par appel.
Cette implémentation renvoie simplement null
, mais elle peut être modifiée en sous-classant InvocationLocal
et en remplaçant cette méthode.
Renvoie | |
---|---|
T |
la valeur initiale de cette variable de portée d'appel |