@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();
  • Вопрос задан
  • 3549 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Moxa
возможно в рантайме используется другая версия этого класса, или proguard заобфускейтил поля
Ответ написан
Ваш ответ на вопрос

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

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