Lenguaje

Field.Set(Object, Object) Método

Definición

Establece el campo representado por este Field objeto en el argumento de objeto especificado en el nuevo valor especificado.

[Android.Runtime.Register("set", "(Ljava/lang/Object;Ljava/lang/Object;)V", "")]
public void Set(Java.Lang.Object? obj, Java.Lang.Object? value);
[<Android.Runtime.Register("set", "(Ljava/lang/Object;Ljava/lang/Object;)V", "")>]
member this.Set : Java.Lang.Object * Java.Lang.Object -> unit

Parámetros

obj
Object

el objeto cuyo campo se debe modificar

value
Object

nuevo valor para el campo de obj modificación

Atributos

Excepciones

si el objeto es null y el campo no es estático

si el objeto no es compatible con la clase declarante

si no se puede acceder a este campo

Comentarios

Establece el campo representado por este Field objeto en el argumento de objeto especificado en el nuevo valor especificado. El nuevo valor se desencapsula automáticamente si el campo subyacente tiene un tipo primitivo.

La operación continúa de la siguiente manera:

Si el campo subyacente es estático, se omite el obj argumento; puede ser null.

De lo contrario, el campo subyacente es un campo de instancia. Si el argumento de objeto especificado es NULL, el método produce un NullPointerException. Si el argumento de objeto especificado no es una instancia de la clase o interfaz que declara el campo subyacente, el método produce un IllegalArgumentException.

Si este Field objeto aplica Java control de acceso de idioma y el campo subyacente no es accesible, el método produce una IllegalAccessExceptionexcepción .

Si el campo subyacente es final, este Field objeto tiene <acceso em>write</em> si y solo si se cumplen las condiciones siguientes: <ul><li>#setAccessible(boolean) setAccessible(true) se ha realizado correctamente para este Field objeto;</li li><>el campo no es estático; y</li li la><>clase declarante del campo no es una clase< de registro Class#isRecord()./li></ul> Si no se cumple alguna de las comprobaciones anteriores, este método produce una IllegalAccessExceptionexcepción .

Establecer un campo final de esta manera es significativo solo durante la deserialización o reconstrucción de instancias de clases con campos finales en blanco, antes de que estén disponibles para el acceso por parte de otras partes de un programa. El uso en cualquier otro contexto puede tener efectos imprevisibles, incluidos los casos en los que otras partes de un programa siguen usando el valor original de este campo.

Si el campo subyacente es de un tipo primitivo, se intenta realizar una conversión de desencapsulado para convertir el nuevo valor en un valor de un tipo primitivo. Si se produce un error en este intento, el método produce una IllegalArgumentExceptionexcepción .

Si, después de posible desencapsulado, el nuevo valor no se puede convertir al tipo del campo subyacente mediante una conversión de identidad o ampliación, el método produce una IllegalArgumentExceptionexcepción .

Si el campo subyacente es estático, la clase que declaró el campo se inicializa si aún no se ha inicializado.

El campo se establece en el nuevo valor nuevo posiblemente desencapsulado y ampliado.

Si el campo está oculto en el tipo de obj, el valor del campo se establece según las reglas anteriores.

Java documentación para java.lang.reflect.Field.set(java.lang.Object, java.lang.Object).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Se aplica a