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

com.xiaoleilu.hutool.util.EnumUtil Maven / Gradle / Ivy

package com.xiaoleilu.hutool.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.xiaoleilu.hutool.map.MapUtil;

/**
 * 枚举工具类
 * 
 * @author looly
 * @since 3.3.0
 */
public class EnumUtil {

	/**
	 * 枚举类中所有枚举对象的name列表
	 * 
	 * @param clazz 枚举类
	 * @return name列表
	 */
	public static List getNames(Class> clazz) {
		final Enum[] enums = clazz.getEnumConstants();
		if (null == enums) {
			return null;
		}
		final List list = new ArrayList<>(enums.length);
		for (Enum e : enums) {
			list.add(e.name());
		}
		return list;
	}

	/**
	 * 获得枚举类中各枚举对象下指定字段的值
	 * 
	 * @param clazz 枚举类
	 * @param fieldName 字段名,最终调用getXXX方法
	 * @return 字段值列表
	 */
	public static List getFieldValues(Class> clazz, String fieldName) {
		final Enum[] enums = clazz.getEnumConstants();
		if (null == enums) {
			return null;
		}
		final List list = new ArrayList<>(enums.length);
		for (Enum e : enums) {
			list.add(ReflectUtil.getFieldValue(e, fieldName));
		}
		return list;
	}

	/**
	 * 获得枚举名对应指定字段值的Map
* 键为枚举名,值为字段值 * * @param clazz 枚举类 * @param fieldName 字段名,最终调用getXXX方法 * @return 枚举名对应指定字段值的Map */ public static Map getNameFieldMap(Class> clazz, String fieldName) { final Enum[] enums = clazz.getEnumConstants(); if (null == enums) { return null; } final Map map = MapUtil.newHashMap(enums.length); for (Enum e : enums) { map.put(e.name(), ReflectUtil.getFieldValue(e, fieldName)); } return map; } }