
net.apexes.commons.lang.ValueEnums Maven / Gradle / Ivy
/*
* Copyright (c) 2018, apexes.net. All rights reserved.
*
* http://www.apexes.net
*
*/
package net.apexes.commons.lang;
/**
*
* @author HeDYn
*/
public class ValueEnums {
/**
* 如果指定的值与枚举值相同就返回true
* @param valueEnum
* @param value
* @return
*/
public static boolean eqValue(ValueEnum valueEnum, T value) {
Checks.verifyNotNull(valueEnum, "valueEnum");
if (valueEnum.value() == null && value == null) {
return true;
}
if ((valueEnum.value() == null && value != null)
|| (valueEnum.value() != null && value == null)) {
return false;
}
return valueEnum.value().equals(value);
}
/**
* 获取枚举的值
* @param valueEnum
* @return
*/
public static & ValueEnum> T toValue(E valueEnum) {
return valueEnum == null ? null : valueEnum.value();
}
/**
* 将值转为指定类型的枚举
* @param classType
* @param value
* @return
*/
public static & ValueEnum> E valueOf(Class classType, T value) {
ValueEnum unknownEnum = null;
E unknown = null;
for (E e : classType.getEnumConstants()) {
if (e.eqValue(value)) {
return e;
} else if (unknown == null) {
ValueEnum ve = (ValueEnum) e;
if (ve.isUnknown()) {
unknownEnum = ve;
unknown = e;
continue;
}
}
}
if (unknown != null) {
unknownEnum.setUnknownValue(value);
return unknown;
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy