com.github.sinjar.common.ext.mapping.IMapping Maven / Gradle / Ivy
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