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ć?

questionAnswers(1)

yourAnswerToTheQuestion