如何通过反射获得枚举的字段值?

问题描述 投票:1回答:1

给出一个枚举

public enum Country {
  INDIA("New Delhi"),
  US("Washinton DC");

  private String capital;
  private Country(String capital) {
    this.capital = capital;
  }

  // getters & setters
}

给定fieldName“ capital”和Country.class使用反射,如何获得字段值?

java reflection enums
1个回答
-1
投票

只要您知道反射是什么:

Class<?> c = Class.forName("Country");
    Object[] objects = c.getEnumConstants();
    for (Object obj : objects) {
      Class<?> clzz = obj.getClass();
      Field capita = clzz.getDeclaredField("capital");
      capita.setAccessible(true);
      System.out.println(capita.get(obj));

输出:

New Delhi
Washinton DC

:如果要访问私有字段,则需要capita.setAccessible(true); //。

© www.soinside.com 2019 - 2024. All rights reserved.