Как создать HashMap или Arraylist, который будет содержать все константы Java-класса

1

У меня есть один файл констант Java, который содержит около 1000 записей, и все они являются только строковыми типами, например

public static String PF_EMPLOYER = "PF-Employer";
public static String ESI_EMPLOYER = "ESI-Employer";
public static String TOTAL_CTC = "Total CTC";
public static String INCENTIVE = "Incentive";
public static String PF_EMPLOYEE = "PF-Employee";
public static String ESI_EMPLOYEE = "ESI-Employee";
==and so on could be more than 1000=======

Мне просто нужны все эти значения String в статическом ArrayList или HashMap, где Integer в HashMap будет 0,1,2,3.... 1000.

Я застрял, чтобы узнать какой-либо эффективный способ выполнить эту задачу. Даже если Spring предоставляет какое-либо решение, я также готов пойти на это.

Невозможно для меня переместить постоянный файл в любом файле свойств.

Обратите внимание, что я использую JDK 7 для JDK 8.

  • 0
    Зачем тебе это делать? Особенно индексирование с целым числом? Если у вас действительно есть веская причина, вы можете использовать отражение, чтобы идентифицировать статические поля класса и поместить их в карту. Я сомневаюсь, что вы получите декларацию, хотя.
  • 0
    На самом деле все эти значения констант находятся в первой строке таблицы Excel в качестве заголовка. Я хочу проверить заголовок, проанализировав таблицу Excel, взяв первую строку, и все значения должны соответствовать значениям этих констант, и значения Excel должны быть в том же порядке.
Показать ещё 5 комментариев
Теги:
arraylist
hashmap

1 ответ

1
Лучший ответ

Если я правильно понимаю ваши требования, единственный естественный способ сделать то, что вы хотите, должен использовать отражение. Если вы называете класс именем ConstClass это может быть что-то вроде:

HashMap<String, String> map = new HashMap<>();
for (Field field: ConstClass.class.getFields()) {
    if (String.class.isAssignableFrom(field.getType())) {
        int modifiers = field.getModifiers();
        if (Modifier.isStatic(modifiers)) {
            map.put(field.getName(), (String) field.get(ConstClass.class));
        }
    }
}

То, что вы получаете на map все поля, содержащие static String.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню