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

net.apexes.commons.lang.ValueEnums Maven / Gradle / Ivy

There is a newer version: 2.1.6
Show newest version
/*
 * 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