Linguaggio

Field.Set(Object, Object) Metodo

Definizione

Imposta il campo rappresentato da questo Field oggetto sull'argomento dell'oggetto specificato sul nuovo valore specificato.

[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

Parametri

obj
Object

oggetto il cui campo deve essere modificato

value
Object

nuovo valore per il campo da obj modificare

Attributi

Eccezioni

se l'oggetto è null e il campo non è statico

se l'oggetto non è compatibile con la classe dichiarante

se questo campo non è accessibile

Commenti

Imposta il campo rappresentato da questo Field oggetto sull'argomento dell'oggetto specificato sul nuovo valore specificato. Il nuovo valore viene decomistato automaticamente se il campo sottostante ha un tipo primitivo.

L'operazione procede come segue:

Se il campo sottostante è statico, l'argomento obj viene ignorato. Può essere Null.

In caso contrario, il campo sottostante è un campo di istanza. Se l'argomento dell'oggetto specificato è Null, il metodo genera un'eccezione NullPointerException. Se l'argomento dell'oggetto specificato non è un'istanza della classe o dell'interfaccia che dichiara il campo sottostante, il metodo genera un'eccezione IllegalArgumentException.

Se questo Field oggetto applica Java controllo di accesso alla lingua e il campo sottostante non è accessibile, il metodo genera un'eccezione IllegalAccessException.

Se il campo sottostante è finale, questo Field oggetto ha<> accesso em write</em> se e solo se vengono soddisfatte le condizioni seguenti: <ul><li>#setAccessible(boolean) setAccessible(true) è riuscito per questo Field oggetto;</li><li>il campo non è statico; e</li><li>la classe dichiarante del campo non è una classe record Class#isRecord().</li></ul> Se uno dei controlli precedenti non viene soddisfatto, questo metodo genera un'eccezione IllegalAccessException.

L'impostazione di un campo finale in questo modo è significativa solo durante la deserializzazione o la ricostruzione di istanze di classi con campi finali vuoti, prima che vengano resi disponibili per l'accesso da altre parti di un programma. L'uso in qualsiasi altro contesto può avere effetti imprevedibili, inclusi i casi in cui altre parti di un programma continuano a usare il valore originale di questo campo.

Se il campo sottostante è di un tipo primitivo, viene tentato di convertire il nuovo valore in un valore di un tipo primitivo. Se questo tentativo non riesce, il metodo genera un'eccezione IllegalArgumentException.

Se, dopo il possibile annullamento del wrapping, il nuovo valore non può essere convertito nel tipo del campo sottostante da una conversione identity o di tipo widening, il metodo genera un'eccezione IllegalArgumentException.

Se il campo sottostante è statico, la classe che ha dichiarato il campo viene inizializzata se non è già stata inizializzata.

Il campo viene impostato sul nuovo valore eventualmente non compresso e ampliato.

Se il campo è nascosto nel tipo di obj, il valore del campo viene impostato in base alle regole precedenti.

per java.lang.reflect.Field.set(java.lang.Object, java.lang.Object).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a