호출 로컬
public class InvocationLocal
extends Object
java.lang.객체 | |
↳ | com.android.tradefed.invoker.logger.InvocationLocal<T> |
이 클래스는 호출 범위 변수를 제공합니다.
이 메커니즘은 ThreadLocal
과 유사하게 작동합니다. 이러한 변수는 해당 변수에 액세스하는 호출(해당 get
메서드를 통해)의 코드에서 고유하고 독립적으로 초기화된 변수 복사본을 갖는다는 점에서 일반 대응 변수와 다릅니다. InvocationLocal
인스턴스는 일반적으로 상태를 호출과 연결하려는 클래스의 전용 정적 필드입니다.
각 호출은 호출이 진행 중이고 InvocationLocal
인스턴스에 액세스할 수 있는 한 호출 범위 변수의 복사본과 연결됩니다. 호출이 완료된 후 호출 로컬 인스턴스의 모든 복사본은 가비지 수집 대상이 됩니다(이러한 복사본에 대한 다른 참조가 존재하지 않는 한).
호출이 아직 진행 중인 동안 더 이상 참조되지 않는 ThreadLocal
인스턴스와 달리 가비지 수집되지 않습니다. 따라서 로컬 또는 비정적 인스턴스를 생성하는 것은 제한 없이 커질 수 있으므로 권장되지 않습니다.
경고: invocation-locals는 동일한 함정이 많은 영광스러운 전역 변수이므로 이 클래스를 드물게 사용하십시오.
요약
공개 생성자 | |
---|---|
InvocationLocal () |
공개 방법 | |
---|---|
final T | get () 이 호출 로컬 변수의 현재 실행 중인 호출 복사본을 반환합니다. |
보호된 메서드 | |
---|---|
T | initialValue () 이 호출 로컬 변수에 대한 현재 호출의 "초기 값"을 반환합니다. |
공개 생성자
호출 로컬
public InvocationLocal ()
공개 방법
얻다
public final T get ()
이 호출 로컬 변수의 현재 실행 중인 호출 복사본을 반환합니다. 변수에 현재 호출에 대한 값이 없으면 먼저 initialValue()
메서드를 호출하여 반환된 값으로 초기화됩니다.
보고 | |
---|---|
T | 이 invocation-local의 현재 실행 중인 호출의 사본. |
보호된 메서드
초기 값
protected T initialValue ()
이 호출 로컬 변수에 대한 현재 호출의 "초기 값"을 반환합니다. 이 메서드는 호출 컨텍스트에서 실행되는 코드가 get()
메서드를 사용하여 변수에 액세스할 때 처음으로 호출됩니다. 이 메서드는 호출당 최대 한 번 호출되도록 보장됩니다.
이 구현은 단순히 null
반환하지만 InvocationLocal
하위 클래스로 분류하고 이 메서드를 재정의하여 변경할 수 있습니다.
보고 | |
---|---|
T | 이 호출 범위 변수의 초기값 |