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<Integer> enum2Ordinal(Class<? extends Enum> clz) {
        if(!clz.isEnum()) return null;
        Enum[] enums = clz.getEnumConstants();
        List<Integer> rels = new ArrayList<Integer>();
        for(Enum en:enums) {
            rels.add(en.ordinal());
        }
        return rels;
    }
    /**
     * 将枚举中的值转换为相应的名称字符串列表
     * @param clz
     * @return
     */
    public static List<String> enum2Name(Class<? extends Enum> clz) {
        if(!clz.isEnum()) return null;
        Enum[] enums = clz.getEnumConstants();
        List<String> rels = new ArrayList<String>();
        for(Enum en:enums) {
            rels.add(en.name());
        }
        return rels;
    }
    /**
     * 将枚举中的值转换为序号和名称的map
     * @param clz
     * @return
     */
    public static Map<Integer,String> enum2BasicMap(Class<? extends Enum> clz) {
        if(!clz.isEnum()) return null;
        Enum[] enums = clz.getEnumConstants();
        Map<Integer,String> rels = new HashMap<Integer,String>();
        for(Enum en:enums) {
            rels.put(en.ordinal(),en.name());
        }
        return rels;
    }
    /**
     * 将枚举中的值的某个属性转换为字符串列表
     * @param clz
     * @param propName某个属性值
     * @return
     */
    public static List<String> enumProp2List(Class<? extends Enum> clz,String propName) {
        if(!clz.isEnum()) return null;
        try {
            Enum[] enums = clz.getEnumConstants();
            List<String> rels = new ArrayList<String>();
            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<Integer,String> enumProp2OrdinalMap(Class<? extends Enum> clz,String propName) {
        if(!clz.isEnum()) return null;
        try {
            Enum[] enums = clz.getEnumConstants();
            Map<Integer,String> rels = new HashMap<Integer,String>();
            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<String,String> enumProp2NameMap(Class<? extends Enum> clz,String propName) {
        if(!clz.isEnum()) return null;
        try {
            Enum[] enums = clz.getEnumConstants();
            Map<String,String> rels = new HashMap<String,String>();
            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<String,String> enumProp2Map(Class<? extends Enum> clz,String keyProp,String valueProp) {
        if(!clz.isEnum()) return null;
        try {
            Enum[] enums = clz.getEnumConstants();
            Map<String,String> rels = new HashMap<String,String>();
            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;
    }
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值