Android: zmiana prywatnego statycznego pola końcowego za pomocą refleksji java
Zmień prywatne pole statyczne za pomocą refleksji Java
Postępowałem zgodnie z instrukcjami w powyższym linku, aby zmienić prywatne statyczne pole końcowe za pomocą refleksji Java. Mam obiekt o nazwie „dane”. Wewnątrz „danych” znajduje się prywatna statyczna końcowa zmienna o nazwie „type”. Chcę ustawić „typ” na wartość null. Oto mój kod.
Field field = data.getClass().getDeclaredField("type");
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(data, null);
Próbowałem to zrobić na Javie 1.7 z podobnym kodem i zadziałało. Ale uruchomienie tego kodu na Androidzie powoduje następujący błąd:java.lang.NoSuchFieldException: modyfikatory
Chyba „modyfikatory” nie są polem w klasie Field na Androidzie.
Jak to naprawić?