ВызовЛокальный
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 | начальное значение для этой переменной области вызова |