Enum枚举类使用集合

1、使用扩展方法使用枚举值对于的Description属性值

public static class EnumExtenstion
{
public static string GetDescriptionName(this Enum enumValue)
{
object[] attr = enumValue.GetType().GetField(enumValue.ToString())
.GetCustomAttributes(typeof(DescriptionAttribute), false);

if (attr.Length > 0)
return ((DescriptionAttribute)attr[0]).Description;

return "";
}
}

2、获取枚举Description属性值和枚举值的对于关系

/// <summary>
/// 获取枚举类型描述属性和枚举值的关系集合(如果没有描述信息或描述信息为空,则不建立关系)
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static Dictionary<string, int> GetEnumDescriptionAndValue<T>()
{
var dicFeatureStatusNameId = new Dictionary<string, int>();
FieldInfo[] fiArray = typeof(T).GetFields();
foreach (FieldInfo item in fiArray)
{
object[] attrs = item.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attrs.Length > 0) //有Description属性
{
string descriptionName = ((DescriptionAttribute)attrs[0]).Description; //枚举描述值
if (!string.IsNullOrWhiteSpace(descriptionName)
&& !dicFeatureStatusNameId.ContainsKey(descriptionName))
{
int value = item.GetValue(typeof(T)).GetHashCode(); //枚举值
dicFeatureStatusNameId.Add(descriptionName, value);
}
}
}

return dicFeatureStatusNameId;
}
时间: 2024-08-02 16:13:01

Enum枚举类使用集合的相关文章

Enum枚举类|注解Annotation

Enum枚举类 ①枚举类和普通类的区别: 使用 enum 定义的枚举类默认继承了 java.lang.Enum 类 枚举类的构造器只能使用 private 访问控制符 枚举类的所有实例必须在枚举类中显式列出(, 分隔    ; 结尾). 列出的实例系统会自动添加 public static final 修饰 ②JDK 1.5 中可以在 switch 表达式中使用Enum定义的枚举类的对象作为表达式, case 子句可以直接使用枚举值的名字, 无需添加枚举类作为限定 ③枚举类的主要方法: valu

Enum枚举类

一.概述 enum 的全称为 enumeration, 是 JDK 1.5  中引入的新特性,存放在 java.lang 包中. 创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类).枚举类型符合通用模式Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称.枚举类型的每一个值都将映射到 protected Enum(String name, int ord

java enum 枚举类

图一代码: public enum LogMethodEnum { WEBCSCARDVALID("返回值"), WEBCSVERIFYPASSWORD("返回值"), WEBCSSAVEPASSWORD("返回值"), WEBCSSETPASSWORD("返回值"), WEBCSQUERYTOTALBALANCE("返回值"), WEBCSQUERYCARDDETAIL("返回值"),

java 枚举类小结 Enum

好久没有接触枚举类了,差不多都忘了,今天抽出个时间总结一下吧.说实话,枚举类确实能够给我们带来很大的方便. 说明:枚举类它约定了一个范围,可以理解成只可以生成固定的几个对象让外界去调用,故枚举类中的构造方法都是private类型的.进而求其次,究竟枚举类到底有何特殊之处呢? 呈上代码一览(本人也是java Android 领域的菜鸟,如有错误之处,希望大家能够给以指点) 1 /** 2 * 测试枚举类 3 * @author Administrator 4 * @Date 2015-8-3 5

java 枚举 类 enum

public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable { private final String name; // 当前枚举常量名称 public final String name() { return name; } private final int ordinal; // 当前枚举常量次序,从0开始 public final int ordina

枚举类的学习

我一直不知道枚举有数量的差别,64个以下(包括)的的枚举是使用了RegularEnumSet,64个以上的使用了JumboEnumSet.最近看编写高质量代码这本书才发现枚举是有数量的限制,不过其实一般的项目还真用不到一个枚举类里面放这么多的枚举数量,不过既然学习了我就随便把它的源码拿出来看看吧,也弥补一下自己确实在枚举这一块的不足. 原谅我见识少,我竟然不知道有EnumMap和EnumSet枚举类的集合,这种时候就是学习的机会了.先看一下这个2个集合类的定义: public class Enu

枚举类专题(有源代码)

简介:JDK1.5之前需要自定义枚举类,JDK1.5新增的enum关键字用于定义枚举类,若枚举只有一个成员,则可以作为一种单例模式的实现方式 枚举类的属性:枚举类对象的属性不应允许被改动,所以应该使用private final修饰 ·枚举类的使用private final修饰的属性应该在构造器中为其赋值 ·若枚举类显式的定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数 Enum枚举类: ·必须在枚举类的第一行声明枚举类对象. ·枚举类和普通类的区别: 1.使用enum定义的枚举类默认继

枚举类:用enum关键字来定义一个枚举类

1)枚举类的两种定义方法 1>通过构造器 public enum Grade{ A("A", "90-100"),B("B","80-89"),C("C", "70-79"),D("D", "80-89"),E("E", "90-100"); private String tip; private St

zend framework获取数据库中枚举类enum的数据并将其转换成数组

在model中建立这样的模型,在其中写入获取枚举类的方法 class Student extends Zend_Db_Table{ protected $_name ='student'; protected $_primary ='id'; function getPartyEnum($enumname){ //适配器并获取数据 $db = $this->getAdapter(); $db->query("SET NAMES GBK"); $sql = $db->q