【问题标题】:Get enum.values() from class that containing it从包含它的类中获取 enum.values()
【发布时间】:2016-04-01 08:26:18
【问题描述】:
class Clazz{
    public enum MyEnum{
        Hello, World
    }
}

Clazz,我如何获得MyEnum.values()

一个用法的例子是:

Class unknownClass = getSomeClass();

如何从unknownClass获取MyEnum.values()

【问题讨论】:

  • 提示:内部枚举是隐式静态的。
  • 你试过什么?我们需要知道您尝试了哪些方法,哪些方法无效
  • 我不是在寻找那个。很抱歉这个问题含糊不清,但我真的想要一个反射类型的答案。仅使用类对象
  • edit您的问题并添加有关您想要实现的目标的更多详细信息。还要正确标记它(reflection 标记可能会很好,如果你需要你的解决方案来使用它)。
  • 你是在问如何使用反射找到所有嵌套的子类?

标签: java reflection enums


【解决方案1】:

您可以通过Clazz.MyEnum.values() 访问Enum,或者您可以直接在其他类中导入MyEnum import com.in.Clazz.MyEnum 因为MyEnumpublic

通过反射获得MyEnum 常量,但如果MyEnum 可访问,则无需使用反射。您可以通过以下方式进行,

Class<?> clazz = Clazz.class;//You are getting dynamically
Class<?> enumClass = clazz.getDeclaredClasses()[0];//assuming at index 0
Enum<?>[] enumConstants = (Enum<?>[]) enumClass.getEnumConstants();
System.out.println(enumConstants[0]);

输出

Hello

【讨论】:

    【解决方案2】:

    The answer is here:

    Method method = parameterIDClass.getMethod("values");
    Enum<?>[] enums = (Enum<?>[])method.invoke(null);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 2012-05-14
      相关资源
      最近更新 更多