All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.sinjar.common.ext.mapping.IMapping Maven / Gradle / Ivy

There is a newer version: 1.3
Show newest version
package com.github.sinjar.common.ext.mapping;

/**
 * Description : 
 *
 * @author CPF
 * @date 2020/3/16
 **/
public interface IMapping {

    /**
     * 通过key来获取enumClass中匹配的枚举对象
     *
     * @param enumClass 枚举类
     * @param key 代码
     * @param  模板类型
     * @return 如果 enumClass为空, 返回 null, 否则返回枚举类中第一个匹配key的枚举对象
     */
    static > T getByKey(Class enumClass, K1 key) {
        if (enumClass == null) {
            return null;
        }
        //通过反射取出Enum所有常量的属性值
        for (T each : enumClass.getEnumConstants()) {
            //利用key进行循环比较,获取对应的枚举
            if (key.equals(each.key())) {
                return each;
            }
        }
        return null;
    }

    /**
     * 通过val来获取enumClass中匹配的枚举对象
     *
     * @param enumClass 枚举类
     * @param val 值
     * @param  模板类型
     * @return 如果 enumClass为空, 返回 null, 否则返回枚举类中第一个匹配val的枚举对象.
     */
    static > T getByVal(Class enumClass, V1 val) {
        if (enumClass == null) {
            return null;
        }
        //通过反射取出Enum所有常量的属性值
        for (T each : enumClass.getEnumConstants()) {
            //利用key进行循环比较,获取对应的枚举
            if (val.equals(each.val())) {
                return each;
            }
        }
        return null;
    }

    /**
     * 通过 key 来获取 val
     *
     * @param enumClass 枚举类
     * @param key 枚举代码
     * @param  模板类型
     * @return 如果 key为空
     */
    static > V1 getValByKey(Class enumClass, K1 key) {
        if (key == null) {
            return null;
        }
        IMapping bean = getByKey(enumClass, key);
        if (null == bean) {
            return null;
        }
        return bean.val();
    }

    /**
     * 通过 val 来获取 key
     *
     * @param enumClass 枚举类
     * @param val 枚举代码
     * @param  模板类型
     * @return 如果 key为空
     */
    static > K1 getKeyByVal(Class enumClass, V1 val) {
        if (val == null) {
            return null;
        }
        IMapping bean = getByVal(enumClass, val);
        if (null == bean) {
            return null;
        }
        return bean.key();
    }

    default K key() {
        return getBean().getKey();
    }

    default V val() {
        return getBean().getVal();
    }

    default MappingBean getBean(){
        return MappingBeanPool.get(this);
    }

    default void putBean(K key, V val){
        MappingBeanPool.put(this, key, val);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy