호출 로컬
public
class
InvocationLocal
extends Object
java.lang.Object의 클래스 | |
↳ | com.android.tradefed.invoker.logger.InvocationLocal<T> |
이 클래스는 호출 범위 변수를 제공합니다.
이 메커니즘은 ThreadLocal
와 유사하게 작동합니다. 이러한 변수는 get
메서드를 통해 변수에 액세스하는 호출의 코드에 변수의 자체 독립적으로 초기화된 사본이 있다는 점에서 일반 변수와 다릅니다. InvocationLocal
인스턴스는 일반적으로 상태를 호출과 연결하려는 클래스의 비공개 정적 필드입니다.
호출이 진행 중이고 InvocationLocal
인스턴스에 액세스할 수 있는 한 각 호출은 호출 범위 변수의 사본과 연결됩니다. 호출이 완료되면 호출 로컬 인스턴스의 모든 사본이 가비지 컬렉션 대상이 됩니다 (이 사본에 대한 다른 참조가 없는 경우).
호출이 진행되는 동안 더 이상 참조되지 않는 ThreadLocal
인스턴스와 달리 가비지 컬렉션은 실행되지 않습니다. 따라서 로컬 또는 비정적 인스턴스는 무한대로 커질 수 있으므로 만들지 않는 것이 좋습니다.
경고: 호출 로컬은 동일한 함정이 많은 화려한 글로벌 변수이므로 이 클래스는 가급적 사용하지 마세요.
요약
공개 생성자 | |
---|---|
InvocationLocal()
|
공개 메서드 | |
---|---|
final
T
|
get()
현재 실행 중인 호출의 이 호출 로컬 변수 사본을 반환합니다. |
보호된 메서드 | |
---|---|
T
|
initialValue()
이 호출 로컬 변수의 현재 호출의 '초기 값'을 반환합니다. |
공개 생성자
InvocationLocal
public InvocationLocal ()
공개 메서드
get
public final T get ()
현재 실행 중인 호출의 이 호출 로컬 변수 사본을 반환합니다. 변수에 현재 호출의 값이 없으면 먼저 initialValue()
메서드를 호출하여 반환된 값으로 초기화됩니다.
반환 값 | |
---|---|
T |
현재 실행 중인 호출의 이 호출 로컬 사본입니다. |
보호된 메서드
initialValue
protected T initialValue ()
이 호출 로컬 변수의 현재 호출의 '초기 값'을 반환합니다. 이 메서드는 호출 컨텍스트에서 실행되는 코드가 get()
메서드로 변수에 액세스할 때 처음 호출됩니다. 이 메서드는 호출당 최대 한 번 호출됩니다.
이 구현은 단순히 null
를 반환하지만 InvocationLocal
를 서브클래스로 만들고 이 메서드를 재정의하여 변경할 수 있습니다.
반환 값 | |
---|---|
T |
이 호출 범위 변수의 초깃값 |