我是靠谱客的博主 认真口红,最近开发中收集的这篇文章主要介绍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;
    }
    
}

最后

以上就是认真口红为你收集整理的java枚举工具类的全部内容,希望文章能够帮你解决java枚举工具类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部