根据枚举类型值获取改值的描述信息

public partial class Enum : System.Web.UI.Page

{
    protected void Page_Load(object sender, EventArgs e)
    {
        Enums myEnums;
        Enums.TryParse("0", out myEnums);
        form1.InnerHtml =  FetchDescription(myEnums);
    }


    public string FetchDescription<T>(T value)
    {
        FieldInfo fi = value.GetType().GetField(value.ToString());
        DescriptionAttribute[] attributes =
            (DescriptionAttribute[])fi.GetCustomAttributes(
                typeof(DescriptionAttribute), false);
        return (attributes.Length > 0) ? attributes[0].Description : value.ToString();
    }
}
public enum Enums
{
    [Description("AAAAAAAAAAA")]
    AA = 0,
    [Description("BBBBBBBBBBB")]
    BB = 1,

}

--任何问题沟加入qq群594096777讨论。

更多信息请查看 个人博客 或者关注公众号:Z技术

### Java根据枚举 Code 获取对应Java 中,可以通过多种方式来根据枚举的 `code` 属性获取对应的枚举实例。通常的做法是在枚举类中定义一个静态方法或者创建一个工具类来进行此操作。 #### 定义带有 `code` 字段的枚举并提供静态查找方法 为了能够通过 `code` 来检索特定的枚举项,在定义枚举时应该给每个枚举成员赋予唯一的 `code` ,并且实现一个用于查询该唯一标识符所关联对象的方法[^2]。 ```java public enum Status { SUCCESS(0, "成功"), ERROR(-1, "错误"); private final int code; private final String desc; Status(int code, String desc) { this.code = code; this.desc = desc; } public static Status fromCode(int code) { for (Status status : values()) { // 使用values()遍历所有可能的状态 if (status.getCode() == code) { return status; } } throw new IllegalArgumentException("Unknown constant: " + code); } public int getCode() { return code; } public String getDesc() { return desc; } } ``` 上述代码展示了如何在一个名为 `Status` 的枚举类型里存储整数形式的 `code` 及其相应的描述文字。同时提供了 `fromCode()` 静态工厂方法用来依据传入的 `int` 类型参数寻找匹配的枚举实例;如果没有找到,则抛出异常提示未知常量。 #### 利用反射机制动态访问枚举属性 除了直接编码的方式外,还可以利用 Java反射 API 动态地读取枚举类型的字段信息。这允许程序更加灵活地处理不同结构的数据模型而无需修源码逻辑本身[^3]。 ```java import java.lang.reflect.Field; public class EnumUtil { @SuppressWarnings("unchecked") public static <T extends Enum<T>> T getByField(Class<T> clazz, String fieldName, Object fieldValue) throws Exception { Field[] fields = clazz.getDeclaredFields(); for (T e : clazz.getEnumConstants()) { for (Field f : fields) { if (!f.getName().equals(fieldName)) continue; boolean accessible = f.isAccessible(); try { f.setAccessible(true); if ((fieldValue.equals(f.get(e)))) { return e; } } finally { f.setAccessible(accessible); } } } return null; } } ``` 这段辅助函数接受三个参数:目标枚举类、待比较的字段名称以及期望匹配的具体数。它会尝试迭代整个枚举集合并与指定条件相匹配的对象进行对比,最终返回符合条件的第一个枚举实例或当找不到任何结果时则返回 `null`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值