Field.Set(Object, Object) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Définit le champ représenté par cet Field objet sur l’argument d’objet spécifié sur la nouvelle valeur spécifiée.
[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
Paramètres
- obj
- Object
l’objet dont le champ doit être modifié
- value
- Object
nouvelle valeur du champ de obj modification
- Attributs
Exceptions
si l’objet est et que le champ n’est null pas statique
si l’objet n’est pas compatible avec la classe déclarante
si ce champ n’est pas accessible
Remarques
Définit le champ représenté par cet Field objet sur l’argument d’objet spécifié sur la nouvelle valeur spécifiée. La nouvelle valeur est automatiquement décompressée si le champ sous-jacent a un type primitif.
L’opération se poursuit comme suit :
Si le champ sous-jacent est statique, l’argument obj est ignoré ; il peut être null.
Sinon, le champ sous-jacent est un champ d’instance. Si l’argument d’objet spécifié est null, la méthode lève un NullPointerException. Si l’argument d’objet spécifié n’est pas une instance de la classe ou de l’interface déclarant le champ sous-jacent, la méthode lève un IllegalArgumentException.
Si cet Field objet applique Java contrôle d’accès au langage et que le champ sous-jacent est inaccessible, la méthode lève un IllegalAccessException.
Si le champ sous-jacent est final, cet Field objet a <accès em>write</em> si et uniquement si les conditions suivantes sont remplies : <ul><li>#setAccessible(boolean) setAccessible(true) a réussi pour cet Field objet ;</li li><>le champ n’est pas statique ; et</li li><>la classe déclarante du champ n’est pas une classe< d’enregistrement Class#isRecord()./li></ul> Si l’une des vérifications ci-dessus n’est pas remplie, cette méthode lève un IllegalAccessException.
La définition d’un champ final de cette façon n’est significative que lors de la désérialisation ou de la reconstruction d’instances de classes avec des champs finaux vides, avant qu’elles ne soient mises à disposition pour l’accès par d’autres parties d’un programme. L’utilisation dans tout autre contexte peut avoir des effets imprévisibles, y compris les cas dans lesquels d’autres parties d’un programme continuent d’utiliser la valeur d’origine de ce champ.
Si le champ sous-jacent est d’un type primitif, une conversion de désencapsulation est tentée de convertir la nouvelle valeur en valeur d’un type primitif. Si cette tentative échoue, la méthode lève un IllegalArgumentException.
Si, après une annulation possible, la nouvelle valeur ne peut pas être convertie en type du champ sous-jacent par une identité ou une conversion étendue, la méthode lève un IllegalArgumentException.
Si le champ sous-jacent est statique, la classe qui a déclaré que le champ est initialisé s’il n’a pas déjà été initialisé.
Le champ est défini sur la nouvelle valeur éventuellement décapée et étendue.
Si le champ est masqué dans le type de obj, la valeur du champ est définie en fonction des règles précédentes.
Java documentation pour java.lang.reflect.Field.set(java.lang.Object, java.lang.Object).
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.