Android: cambiar el campo final estático privado usando la reflexión de java
Cambiar el campo final estático privado usando la reflexión de Java
Seguí las instrucciones en el acoplamiento arriba para cambiar un campo final estático privado usando la reflexión de java. Tengo un objeto llamado "datos". Dentro de "datos", hay una variable final estática privada denominada "tipo". Quiero establecer "tipo" para ser nulo. Aquí está mi código.
- UnsuppotedOperationException.getCause se devuelve
- Reglas de ProGuard para la reflexión de Kotlin
- Android, ¿cómo borrar la lista de tareas recientes que podría obtener desde el botón Inicio en la mayoría de teléfono? ¿La reflexión es una manera posible?
- Anotación personalizada de Java y carga dinámica
- Acceso a campos desde un objeto proxy
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);
Intenté hacerlo en Java 1.7 con código similar y funcionó. Pero ejecutar este código en Android produce el error siguiente: java.lang.NoSuchFieldException: modificadores
Supongo que "modificadores" no es un campo en la clase Field en Android.
¿Cómo puedo solucionar esto?
- Field.getGenericType () devuelve la instancia de java.lang.Class en lugar de Type
- Java / Android Método de llamada desde cadena WITH Value
- Interceptar llamadas de método
- Protección contra la reflexión - android
- Confirmación de mi comprensión del principio de Android Concept (uso de múltiples actividades)
- ¿Cómo utilizar la reflexión para cambiar el servicio de copia de seguridad?
- ¿Cómo obtengo el nombre del método dentro de ese método?
- Soporte de la clase Robolectric de Android. Cómo tener las referencias de la clase de biblioteca R desde el proyecto de aplicación
Esto funciona.
Field field = data.getClass().getDeclaredField("type"); field.setAccessible(true); field.set(data, null);
- Error de aplicación Es un directorio (file: ///#android_asset/www/index.html)
- Biblioteca de diseño de Android CoordinatorLayout, AppBarLayout y DrawerLayout