您尚未登录,请登录后浏览更多内容! 登录 | 加入最MC

QQ登录

只需一步,快速开始

 找回密码
 加入最MC

QQ登录

只需一步,快速开始

查看: 1889|回复: 0
打印 上一主题 下一主题

[教程]在Java中通过反射实例化枚举

[复制链接]
  • TA的每日心情
    慵懒
    2019-2-10 10:44
  • 签到天数: 56 天

    [LV.5]常住居民I

    跳转到指定楼层
    楼主
    发表于 2017-8-29 15:04:54 | 只看该作者 |0人打赏回帖奖励 |倒序浏览 |阅读模式
    假假设我们有一个像这样的枚举:
    1. public enum Status{  
    2.   ON,
    3.   OFF
    4. }
    复制代码


    在某些情况下,我们需要通过反射的方式获得其中的某一个实例。

    我们可以通过调用Enum中的valueOf方法,通过String获得枚举实例。

    1. Class<?> statusClass = Class.forName("Status");  
    2. Method valueOfMethod = statusClass.getMethod("valueOf",String.class);  
    3. Object onStatus = valueOfMethod.invoke(null,"ON");  
    复制代码


    或者这么写:

    1. Class<Enum> statusClass = (Class<Enum>) Class.forName("Status");  
    2. Object onStatus = Enum.valueOf(statusClass, "ON");  
    复制代码



    打赏

    0

    收藏

    0

    支持

    0

    反对

    0

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    您需要登录后才可以回帖 登录 | 加入最MC

    本版积分规则