호출 로컬

public class InvocationLocal
extends Object

java.lang.Object의 클래스
   ↳ com.android.tradefed.invoker.logger.InvocationLocal<T>


이 클래스는 호출 범위 변수를 제공합니다.

메커니즘은 ThreadLocal와 유사하게 작동합니다. 이러한 변수는 (get 메서드를 통해) 액세스하는 호출에서 해당 코드의 정상 대응 요소 에는 독립적으로 초기화된 변수의 사본이 있습니다. 인스턴스 InvocationLocal개 일반적으로 상태를 호출과 연결하려는 클래스의 비공개 정적 필드입니다.

각 호출은 호출이 진행 중이며 InvocationLocal 인스턴스에 액세스할 수 있습니다. 호출이 완료되면 호출 로컬 인스턴스의 모든 복사본에 가비지가 포함됩니다. 컬렉션 (사본에 대한 다른 참조가 없는 경우)

더 이상 참조되지 않는 ThreadLocal 인스턴스와는 달리 가비지 컬렉션이 아닙니다. 로컬 또는 비정적 인스턴스 만들기 제한이 없이 확장될 수 있으므로 권장되지 않습니다.

경고: invocation-locals는 여러 가지 함정이 있습니다.

요약

공개 생성자

InvocationLocal()

공개 메서드

final T get()

이 호출 로컬 변수의 현재 실행 중인 호출 사본을 반환합니다.

보호된 메서드

T initialValue()

현재 호출의 '초기 값'을 반환합니다. 사용할 수 있습니다.

공개 생성자

호출 로컬

public InvocationLocal ()

공개 메서드

get

public final T get ()

이 호출 로컬 변수의 현재 실행 중인 호출 사본을 반환합니다. 만약 변수에 현재 호출에 대한 값이 없으면 먼저 initialValue() 메서드를 호출하여 반환됩니다.

반환 값
T 현재 실행 중인 호출의 이 호출 로컬 사본

보호된 메서드

initialValue

protected T initialValue ()

현재 호출의 '초기 값'을 반환합니다. 사용할 수 있습니다. 이 메서드는 호출 컨텍스트에서 코드가 처음 실행될 때 호출됩니다. get() 메서드를 사용하여 변수에 액세스합니다. 이 메서드는 호출당 최대 한 번입니다.

이 구현은 단순히 null를 반환하지만 InvocationLocal을 서브클래스로 분류하고 이 메서드를 재정의하여 변경할 수 있습니다.

반환 값
T 이 호출 범위 변수의 초깃값