package vc.thinker.utils;

import com.google.common.collect.Maps;
import org.springframework.lang.Nullable;

import java.util.Map;
import java.util.function.Function;

/**
 * 枚举解析器
 *
 * @author HeTongHao
 * @since 2021/6/17 16:34
 */
public class Resolve<T, K> {
    private final Map<K, T> keyValueMap = Maps.newHashMap();


    /**
     * 构造
     *
     * @param values     枚举数组
     * @param resolveKey 根据那个字段解析
     */
    public Resolve(T[] values, Function<T, K> resolveKey) {
        for (T value : values) {
            keyValueMap.put(resolveKey.apply(value), value);
        }
    }

    @Nullable
    public T resolve(K key) {
        return keyValueMap.get(key);
    }
}