java枚举工具类

package com.mmiku.basic.util;

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.PropertyUtils;

@SuppressWarnings("rawtypes")
public class EnumUtils {
    /**
     * 将枚举中的值转换为一组序数列表
     * @param clz
     * @return
     */
    public static List enum2Ordinal(Class clz) {
        if(!clz.isEnum()) return null;
        Enum[] enums = clz.getEnumConstants();
        List rels = new ArrayList();
        for(Enum en:enums) {
            rels.add(en.ordinal());
        }
        return rels;
    }
    /**
     * 将枚举中的值转换为相应的名称字符串列表
     * @param clz
     * @return
     */
    public static List enum2Name(Class clz) {
        if(!clz.isEnum()) return null;
        Enum[] enums = clz.getEnumConstants();
        List rels = new ArrayList();
        for(Enum en:enums) {
            rels.add(en.name());
        }
        return rels;
    }
    /**
     * 将枚举中的值转换为序号和名称的map
     * @param clz
     * @return
     */
    public static Map enum2BasicMap(Class clz) {
        if(!clz.isEnum()) return null;
        Enum[] enums = clz.getEnumConstants();
        Map rels = new HashMap();
        for(Enum en:enums) {
            rels.put(en.ordinal(),en.name());
        }
        return rels;
    }
    /**
     * 将枚举中的值的某个属性转换为字符串列表
     * @param clz
     * @param propName某个属性值
     * @return
     */
    public static List enumProp2List(Class clz,String propName) {
        if(!clz.isEnum()) return null;
        try {
            Enum[] enums = clz.getEnumConstants();
            List rels = new ArrayList();
            for(Enum en:enums) {
                rels.add((String)PropertyUtils.getProperty(en, propName));
            }
            return rels;
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 将枚举中的值的某个属性转换为序号和字符串列表
     * @param clz
     * @param propName某个属性值
     * @return
     */
    public static Map enumProp2OrdinalMap(Class clz,String propName) {
        if(!clz.isEnum()) return null;
        try {
            Enum[] enums = clz.getEnumConstants();
            Map rels = new HashMap();
            for(Enum en:enums) {
                rels.put(en.ordinal(),(String)PropertyUtils.getProperty(en, propName));
            }
            return rels;
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 将枚举中的值的某个属性转换为名称和字符串map
     * @param clz
     * @param propName某个属性值
     * @return
     */
    public static Map enumProp2NameMap(Class clz,String propName) {
        if(!clz.isEnum()) return null;
        try {
            Enum[] enums = clz.getEnumConstants();
            Map rels = new HashMap();
            for(Enum en:enums) {
                rels.put(en.name(),(String)PropertyUtils.getProperty(en, propName));
            }
            return rels;
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 将枚举中的两个属性转换为map
     * @param clz
     * @param keyProp 要转化的key的属性名称
     * @param valueProp 要转换的value的属性名称
     * @return
     */
    public static Map enumProp2Map(Class clz,String keyProp,String valueProp) {
        if(!clz.isEnum()) return null;
        try {
            Enum[] enums = clz.getEnumConstants();
            Map rels = new HashMap();
            for(Enum en:enums) {
                rels.put((String)PropertyUtils.getProperty(en,keyProp),(String)PropertyUtils.getProperty(en,valueProp));
            }
            return rels;
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        return null;
    }
    
}

你可能感兴趣的:(java工具类)