호출로컬

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 ()

이 호출 지역 변수에 대한 현재 호출의 "초기 값"을 반환합니다.

공개 생성자

호출로컬

public InvocationLocal ()

공개 메소드

얻다

public final T get ()

이 호출 지역 변수의 현재 실행 중인 호출 복사본을 반환합니다. 변수에 현재 호출에 대한 값이 없으면 먼저 initialValue() 메서드 호출로 반환된 값으로 초기화됩니다.

보고
T 현재 실행 중인 호출의 이 호출 로컬 복사본입니다.

보호된 방법

초기 값

protected T initialValue ()

이 호출 지역 변수에 대한 현재 호출의 "초기 값"을 반환합니다. 이 메소드는 호출 컨텍스트에서 실행되는 처음 시간 코드가 get() 메소드를 사용하여 변수에 액세스할 때 호출됩니다. 이 메소드는 호출당 최대 한 번 호출되도록 보장됩니다.

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

보고
T 이 호출 범위 변수의 초기값