ClassValue — 타입별 값 캐시

ClassValue — 타입별 값 캐시

ClassValue는 계산된 값을 (잠재적으로) 모든 타입에 지연(lazily) 연결합니다. 예를 들어 동적 언어가 메시지 전송 호출 사이트에서 만나는 각 클래스에 대해 메시지 디스패치 테이블을 구성해야 한다면, 클래스를 만날 때마다 메시지 전송을 빠르게 수행하는 데 필요한 정보를 캐싱하기 위해 ClassValue를 사용할 수 있습니다.

출처: Java API Reference

본문

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을 호출하면 다시 계산됩니다.

이 클래스는 타입별로 값 하나를 느리게 계산하고 재사용하는 매커니즘이므로, 타입 기반의 메타데이터나 디스패치 정보를 캐싱하는 데 적합합니다.

더 알아보기 (Learn more)