Sprache

Field.Set(Object, Object) Methode

Definition

Legt das durch dieses Field Objekt dargestellte Feld für das angegebene Objektargument auf den angegebenen neuen Wert fest.

[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

Parameter

obj
Object

das Objekt, dessen Feld geändert werden soll

value
Object

der neue Wert für das Zu ändernde obj Feld

Attribute

Ausnahmen

wenn das Objekt und das Feld nicht statisch ist null

wenn das Objekt nicht mit der deklarierenden Klasse kompatibel ist

Wenn auf dieses Feld nicht zugegriffen werden kann

Hinweise

Legt das durch dieses Field Objekt dargestellte Feld für das angegebene Objektargument auf den angegebenen neuen Wert fest. Der neue Wert wird automatisch entwappt, wenn das zugrunde liegende Feld einen Grundtyp aufweist.

Der Vorgang wird wie folgt fortgesetzt:

Wenn das zugrunde liegende Feld statisch ist, wird das obj Argument ignoriert. Es kann null sein.

Andernfalls ist das zugrunde liegende Feld ein Instanzfeld. Wenn das angegebene Objektargument null ist, löst die Methode eine NullPointerException. Wenn das angegebene Objektargument keine Instanz der Klasse oder Schnittstelle ist, die das zugrunde liegende Feld deklariert, löst die Methode eine IllegalArgumentException.

Wenn dieses Field Objekt Java Sprachzugriffssteuerung erzwingt und auf das zugrunde liegende Feld nicht zugegriffen werden kann, löst die Methode eine IllegalAccessException.

Wenn das zugrunde liegende Feld abgeschlossen ist, hat dieses Field Objekt den<Schreib>-/Em-Zugriff<, wenn die folgenden Bedingungen erfüllt sind: >ul<>li<> ist für dieses #setAccessible(boolean) setAccessible(true) Objekt erfolgreich.Field</li li><>das Feld ist nicht statisch. Und</li li><>die deklarierende Klasse des Felds ist keine Class#isRecord()-Datensatzklasse.</li></ul> Wenn eine der oben genannten Prüfungen nicht erfüllt ist, löst diese Methode eine IllegalAccessException.

Das Festlegen eines endgültigen Felds auf diese Weise ist nur während der Deserialisierung oder Wiederherstellung von Instanzen von Klassen mit leeren endgültigen Feldern sinnvoll, bevor sie für den Zugriff durch andere Teile eines Programms verfügbar gemacht werden. Die Verwendung in einem anderen Kontext kann unvorhersehbare Auswirkungen haben, einschließlich Fällen, in denen andere Teile eines Programms den ursprünglichen Wert dieses Felds weiterhin verwenden.

Wenn das zugrunde liegende Feld einen primitiven Typ aufweist, wird versucht, die Konvertierung zum Entwrappen des neuen Werts in einen Wert eines Grundtyps zu konvertieren. Wenn dieser Versuch fehlschlägt, löst die Methode eine IllegalArgumentException.

Wenn der neue Wert nach Möglichkeit nicht durch eine Identitäts- oder Erweiterungskonvertierung in den Typ des zugrunde liegenden Felds konvertiert werden kann, löst die Methode eine IllegalArgumentException.

Wenn das zugrunde liegende Feld statisch ist, wird die Klasse, die das Feld deklariert hat, initialisiert, wenn es noch nicht initialisiert wurde.

Das Feld wird auf den möglicherweise entwrappten und erweiterten neuen Wert festgelegt.

Wenn das Feld im Typ des objFelds ausgeblendet ist, wird der Wert des Felds entsprechend den vorherigen Regeln festgelegt.

Java Dokumentation für java.lang.reflect.Field.set(java.lang.Object, java.lang.Object).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: