呼び出しローカル

public class InvocationLocal
extends Object

java.lang.オブジェクト
com.android.tradefed.invoker.logger.InvocationLocal<T>


このクラスは、呼び出しスコープの変数を提供します。

このメカニズムはThreadLocalと同様に動作します。これらの変数は、( getメソッド経由で) 変数にアクセスする呼び出し内のコードに、独自の独立して初期化された変数のコピーがあるという点で、通常の変数とは異なります。 InvocationLocalインスタンスは通常、状態を呼び出しに関連付けたいクラスのプライベート静的フィールドです。

呼び出しが進行中であり、 InvocationLocalインスタンスにアクセスできる限り、各呼び出しは呼び出しスコープ変数のコピーに関連付けられます。呼び出しが完了すると、呼び出しローカル インスタンスのすべてのコピーがガベージ コレクションの対象になります (これらのコピーへの他の参照が存在しない限り)。

ThreadLocalインスタンスとは異なり、呼び出しの進行中に参照されなくなったインスタンスはガベージ コレクションされないことに注意してください。したがって、ローカルまたは非静的インスタンスの作成は、際限なく増大する可能性があるため推奨されません。

警告: 呼び出しローカル変数は、同じ落とし穴がたくさんある美化されたグローバル変数であるため、このクラスの使用は慎重に行ってください。

まとめ

パブリックコンストラクター

InvocationLocal ()

パブリックメソッド

final T get ()

この呼び出しローカル変数の現在実行中の呼び出しのコピーを返します。

保護されたメソッド

T initialValue ()

この呼び出しローカル変数の現在の呼び出しの「初期値」を返します。

パブリックコンストラクター

呼び出しローカル

public InvocationLocal ()

パブリックメソッド

得る

public final T get ()

この呼び出しローカル変数の現在実行中の呼び出しのコピーを返します。現在の呼び出しで変数に値がない場合は、まず、 initialValue()メソッドの呼び出しによって返された値に初期化されます。

戻り値
Tこの呼び出しローカルの現在実行中の呼び出しのコピー。

保護されたメソッド

初期値

protected T initialValue ()

この呼び出しローカル変数の現在の呼び出しの「初期値」を返します。このメソッドは、呼び出しのコンテキストで実行されるコードがget()メソッドを使用して変数に初めてアクセスするときに呼び出されます。このメソッドは、呼び出しごとに最大 1 回呼び出されることが保証されます。

この実装は単純にnullを返しますが、 InvocationLocalサブクラス化し、このメソッドをオーバーライドすることで変更できます。

戻り値
Tこの呼び出しスコープ変数の初期値