`
longgangbai
  • 浏览: 7340892 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用反射实现的枚举工具类

阅读更多

public abstract class EnumUtils {

 /**
  * 从指定的枚举类中根据property搜寻匹配指定值的枚举实例
  * @param <T>
  * @param enumClass
  * @param property
  * @param propValue
  * @return
  */
 public static <T extends Enum<T>> T fromEnumProperty(Class<T> enumClass, String property, Object propValue) {


  T[] enumConstants = enumClass.getEnumConstants();

 

 

  for (T t : enumConstants) {
   Object constantPropValue;
   try {
    constantPropValue = BeanUtils.getDeclaredFieldValue(t, property);


    if (ObjectUtils.equals(constantPropValue, propValue)) {
     return t;
    }
   } catch (Exception e) {
    throw new RuntimeException(e);
   }
  }
  return null;

 }

 

 /**
  * 从指定的枚举类中根据名称匹配指定值
  * @param <T>
  * @param enumClass
  * @param constantName
  * @return
  */
    public static <T extends Enum<T>> T fromEnumConstantName(Class<T> enumClass, String constantName) {
        T[] enumConstants = enumClass.getEnumConstants();
        for (T t : enumConstants) {
            if (((Enum<?>) t).name().equals(constantName)) {
                return t;
            }
        }
        return null;
    }
 
}

分享到:
评论

相关推荐

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法等对象。枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-...

    枚举和简单反射

    总结起来,枚举和反射是Java中提高代码可维护性和灵活性的两大工具。枚举用于定义一组预定义的常量,而反射则允许我们在运行时动态地操作类和对象。两者在实际编程中都有其独特的作用,正确理解和使用它们,能帮助...

    解析字符串转化为对象+code转desc+通过值实例枚举类+EnumUtil+PackageUtils工具类

    解析字符串转化为对象+code转desc+通过值实例枚举类+EnumUtil+PackageUtils工具类 ZipInputStream实现压缩文件的读取与数据转化的过程,利用反射实现根据枚举值获取枚举对象。

    通过枚举反向给实体类赋值

    总结起来,通过创建一个枚举工具类,我们可以实现从枚举的描述反向赋值给实体类,简化了处理表单数据的过程,减少了代码的冗余,提高了代码质量。这个技巧在处理多枚举类型的数据时尤其有用,能够显著提升开发效率。

    注解+反射实现自定义验证工具,可实现业务校验,字段多种校验

    验证工具类需要能够读取到类上的注解信息,并根据这些信息执行相应的验证逻辑。具体来说,包括以下几个方面: - **枚举定义**:定义枚举`VerifyWay`,用于表示不同的验证策略,比如`GreaterThan`、`LessThan`、`...

    C#net反射实现访问类中的私有变量或者方法

    `Test`类中的`Main`方法则演示了如何使用反射来修改`ChangeValue`类实例中的私有变量。 - **获取类型**:使用`GetType()`方法获取`ChangeValue`对象的类型信息。 - **获取私有字段信息**:通过`GetField`方法,并...

    28个java常用的工具类源码

    18. **枚举工具类**:如EnumUtils,处理枚举类型,方便在代码中使用枚举。 19. **序列化/反序列化工具类**:如SerializationUtils,用于对象的序列化和反序列化,便于存储和传输。 20. **URL处理工具类**:如...

    502.500.JAVA基础教程_枚举类与注解-使用enum关键字定义的枚举类实现接口(502).rar

    总结来说,Java中的枚举类是一种强大的工具,可以用来定义固定集合的常量,并且可以实现接口和使用注解来增强功能。通过学习和熟练掌握枚举类的使用,开发者可以编写出更加清晰、可维护的代码。

    牛逼的java常用工具类

    Java作为一个广泛使用的编程语言,其丰富的工具类库是开发者日常工作中不可或缺的部分。在这个名为"牛逼的java常用工具类"的压缩包中,我们可以期待找到一些由经验丰富的开发者精心设计和优化的工具类,这些工具类能...

    通过表格中数据自动生成枚举和方法(内涵使用教程)

    这需要用到C#的反射和元数据功能,通过`Type`类和`MethodInfo`类来创建和操作方法。例如,你可以根据表格中的数据定义一个模板方法,然后为每个枚举值生成相应的方法实例。 这个工具包提供的使用教程会详细解释如何...

    Java常用工具类

    3. **Apache Commons Lang**:Apache软件基金会的一个开源项目,提供了大量扩展Java语言特性的工具类,如字符串处理、数组操作、反射、枚举操作等。 - `StringUtils`:提供了丰富的字符串操作方法,如空白字符处理...

    java高效开发26个工具类

    "java高效开发26个工具类"这个资源包含了26个精心设计的工具类,每个类都含有丰富的注释,方便开发者理解和使用。下面我们将详细探讨这些工具类可能涵盖的知识点。 1. **字符串处理**:在Java中,String类虽然强大...

    json 转化工具类

    自定义的JSON转化工具类通常会有一些限制,比如不支持泛型、枚举类型或者复杂的嵌套结构,但它的好处在于可以根据项目需求进行定制。 在实际使用中,这类工具类会提供如下功能: - **JSON字符串转Java对象**:将...

    Java 单例模式 工具类

    本篇文章将深入探讨如何在Java中实现单例模式,以及如何创建一个工具类来封装单例的创建。 首先,让我们了解单例模式的几种常见实现方式: 1. 饿汉式(静态常量): 这是最简单的单例实现,它在类加载时就完成了...

    Java反射动态加载实例类

    在给定文件的代码示例中,我们看到一个名为`Refelection`的类,该类使用反射动态加载了一个名为`Student`的实例类。具体步骤如下: 1. **读取配置信息**:首先,通过`Properties`类读取配置文件(`D:\\xuliang.txt`...

    java常用工具类

    "java常用工具类"这个主题涵盖了Java开发中常用的类和方法,这些工具类可以帮助我们简化编程工作,提高代码的可读性和可维护性。在Java中,`java.util`包就是这样一个包含大量工具类的包,提供了很多实用的功能。 1...

    Java枚举类型Enum的用法

    枚举默认继承`java.lang.Enum`类,因此它们不能直接继承其他类,但可以实现接口。这使得枚举可以具有特定的行为。 6. **枚举常量的遍历** 可以通过for-each循环遍历枚举的所有实例,如: ```java for (Color ...

    枚举操作类

    这样的辅助类能够提高代码的复用性,降低枚举操作的复杂度,同时使得枚举的管理和使用更加规范和灵活。 例如,一个简单的`EnumHelper`类可能如下所示: ```csharp public static class EnumHelper { public ...

    Java工具类之Apache的Commons Lang和BeanUtils

    Java工具类是开发过程中不可或缺的一部分,它们提供了许多实用的功能,帮助开发者提高代码的效率和可维护性。Apache Commons Lang和BeanUtils是两个非常著名的Java工具库,由Apache软件基金会开发和维护。这两个库...

    整理的若干java常用工具类

    1. **集合框架**:Java集合框架是Java工具类的一个重要组成部分,包括List、Set、Map等各种接口和实现类,如ArrayList、LinkedList、HashSet、HashMap等。这些类提供了丰富的操作方法,如添加元素、删除元素、查找...

Global site tag (gtag.js) - Google Analytics