[kotlin] 코틀린에서 제네릭을 사용하여 캐시(Cache)를 다루는 방법은 어떻게 되는가?

아래는 코틀린에서 제네릭을 사용하여 간단한 캐시를 구현하는 예제입니다.

class Cache<K, V> {
    private val cacheMap: MutableMap<K, V> = mutableMapOf()

    fun put(key: K, value: V) {
        cacheMap[key] = value
    }

    fun get(key: K): V? {
        return cacheMap[key]
    }

    fun remove(key: K) {
        cacheMap.remove(key)
    }

    fun clear() {
        cacheMap.clear()
    }
}

위의 예제에서 Cache 클래스는 제네릭을 사용하여 KV라는 키와 값의 유형을 나타내는 매개변수를 정의합니다. 이를 통해 캐시가 어떤 유형의 키와 값이던 다룰 수 있도록 합니다.

예를 들어, 문자열 키와 정수 값을 갖는 캐시를 생성하려면 다음과 같이 할 수 있습니다.

val stringCache = Cache<String, Int>()
stringCache.put("one", 1)
val value: Int? = stringCache.get("one")

위의 예제에서는 문자열과 정수를 갖는 캐시를 생성하고 값을 가져오는 방법을 보여줍니다.

제네릭을 사용하면 캐시가 어떤 유형의 객체든 다룰 수 있기 때문에 매우 유용합니다.