Задать вопрос
@bars96

Откуда NoSuchFieldException при getDeclaredField() и наличии поля?

java.lang.NoSuchFieldException: c
at java.lang.Class.getDeclaredField(Unknown Source)
at ru.onlymc.OnlyMZ.CustomEntityType.getPrivateStatic(CustomEntityType.java:177)


Метод:

private static Object getPrivateStatic(Class clazz, String f) throws Exception {
  Field field = clazz.getDeclaredField(f);
  field.setAccessible(true);
  return field.get(null);
}


Вызов:

private static void a(Class paramClass, String paramString, int paramInt) {
  try {
    ((Map) getPrivateStatic(sg.class, "c")).put(paramString, paramClass);
    //...
  } catch (Exception exc) {
    exc.printStackTrace();
  }
}


sg.class (из декомпила, дабы удостовериться что поля точно существуют):

private static Map c = new HashMap();
private static Map d = new HashMap();
private static Map e = new HashMap();
private static Map f = new HashMap();
private static Map g = new HashMap();
public static HashMap a = new LinkedHashMap();
  • Вопрос задан
  • 3587 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
  • Skillfactory
    Профессия Java-разработчик
    14 месяцев
    Далее
  • Академия Eduson
    Java-разработчик
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Moxa
возможно в рантайме используется другая версия этого класса, или proguard заобфускейтил поля
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы