InvocationLocal
public
class
InvocationLocal
extends Object
java.lang.Object | |
↳ | com.android.tradefed.invoker.logger.InvocationLocal<T> |
Cette classe fournit des variables de portée d'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 de portée d'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. Il est donc déconseillé de créer des instances locales ou non statiques, car elles pourraient croître sans limite.
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 cette variable locale d'appel de l'appel en cours d'exécution. 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 locale d'appel. 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 est appelée au maximum une 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 |