ClassValue — 타입별 값 캐시
ClassValue — 타입별 값 캐시
ClassValue는 계산된 값을 (잠재적으로) 모든 타입에 지연(lazily) 연결합니다. 예를 들어 동적 언어가 메시지 전송 호출 사이트에서 만나는 각 클래스에 대해 메시지 디스패치 테이블을 구성해야 한다면, 클래스를 만날 때마다 메시지 전송을 빠르게 수행하는 데 필요한 정보를 캐싱하기 위해 ClassValue를 사용할 수 있습니다.
본문
ClassValue는 또한 해당 타입에 대한 정보를 얻는 데 비용이 클 경우, 그 값을 계산하고 캐시하여 이후 조회를 빠르게 하는 데 유용합니다.
public abstract class ClassValue<T> extends Object
생성자
protected ClassValue()
메서드
protected abstract T computeValue(Class<?> type)
public T get(Class<?> type)
public void remove(Class<?> type)
computeValue(type)— 지정된 타입에 대한 초기 값을 계산합니다. 하위 클래스가 반드시 구현해야 하는 추상 메서드입니다.get(type)— 지정된 타입에 대한 값을 반환합니다. 처음 호출되면computeValue로 값을 계산하고 캐시합니다.remove(type)— 지정된 타입에 대해 캐시된 값을 제거합니다. 이후get을 호출하면 다시 계산됩니다.
이 클래스는 타입별로 값 하나를 느리게 계산하고 재사용하는 매커니즘이므로, 타입 기반의 메타데이터나 디스패치 정보를 캐싱하는 데 적합합니다.