ВызовЛокальный

public class InvocationLocal
extends Object

java.lang.Объект
com.android.tradefed.invoker.logger.IndictionLocal<T>


Этот класс предоставляет переменные области вызова.

Механизм работает аналогично ThreadLocal . Эти переменные отличаются от своих обычных аналогов тем, что код, обращающийся к одной из них (через метод get ), имеет собственную, независимо инициализированную копию переменной. Экземпляры InvocationLocal обычно представляют собой частные статические поля в классах, которые хотят связать состояние с вызовом.

Каждый вызов связан с копией переменной области вызова, пока вызов выполняется и экземпляр InvocationLocal доступен. После завершения вызова все его копии локальных экземпляров вызова подлежат сборке мусора (если не существуют другие ссылки на эти копии).

Обратите внимание: в отличие от экземпляров ThreadLocal , на которые больше не ссылаются во время выполнения вызова, сбор мусора не производится. Поэтому создание локальных или нестатических экземпляров не рекомендуется, поскольку они могут неограниченно расти.

Предупреждение. Используйте этот класс с осторожностью, поскольку локальные вызовы — это прославленные глобальные переменные со многими из тех же ловушек.

Краткое содержание

Общественные конструкторы

InvocationLocal ()

Публичные методы

final T get ()

Возвращает копию локальной переменной вызова при текущем вызове.

Защищенные методы

T initialValue ()

Возвращает «начальное значение» текущего вызова для этой локальной переменной вызова.

Общественные конструкторы

ВызовЛокальный

public InvocationLocal ()

Публичные методы

получать

public final T get ()

Возвращает копию локальной переменной вызова при текущем вызове. Если переменная не имеет значения для текущего вызова, она сначала инициализируется значением, возвращаемым вызовом метода initialValue() .

Возврат
T копия текущего вызова этого локального вызова.

Защищенные методы

начальное значение

protected T initialValue ()

Возвращает «начальное значение» текущего вызова для этой локальной переменной вызова. Этот метод будет вызван в первый раз, когда код, выполняющийся в контексте вызова, обращается к переменной с помощью метода get() . Этот метод гарантированно будет вызываться не более одного раза за один вызов.

Эта реализация просто возвращает null , но его можно изменить, создав подкласс InvocationLocal и переопределив этот метод.

Возврат
T начальное значение для этой переменной области вызова