言語

Field.Set(Object, Object) メソッド

定義

指定したオブジェクト引数のこの Field オブジェクトによって表されるフィールドを、指定した新しい値に設定します。

[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

パラメーター

obj
Object

フィールドを変更する必要があるオブジェクト

value
Object

変更する obj のフィールドの新しい値

属性

例外

オブジェクトが null され、フィールドが非静的である場合

オブジェクトが宣言クラスと互換性がない場合

このフィールドにアクセスできない場合

注釈

指定したオブジェクト引数のこの Field オブジェクトによって表されるフィールドを、指定した新しい値に設定します。 基になるフィールドにプリミティブ型がある場合、新しい値は自動的にラップ解除されます。

操作は次のように進みます。

基になるフィールドが静的な場合、 obj 引数は無視されます。null である可能性があります。

それ以外の場合、基になるフィールドはインスタンス フィールドです。 指定したオブジェクト引数が null の場合、メソッドは NullPointerExceptionをスローします。 指定したオブジェクト引数が、基になるフィールドを宣言するクラスまたはインターフェイスのインスタンスでない場合、メソッドは IllegalArgumentExceptionをスローします。

このField オブジェクトが言語アクセス制御Java適用されていて、基になるフィールドにアクセスできない場合、メソッドはIllegalAccessExceptionをスローします。

基になるフィールドが final の場合、この Field オブジェクトは、次の条件が満たされた場合にのみ、 <em>write</em> アクセスできます: <ul><li>#setAccessible(boolean) setAccessible(true) がこの Field オブジェクトに対して成功した場合に限ります。</li><li>フィールドは非静的です。また</li><li>フィールドの宣言クラスが Class#isRecord() レコード クラスではありません。</li></ul> 上記のチェックのいずれかが満たされていない場合、このメソッドは IllegalAccessExceptionをスローします。

この方法で最終フィールドを設定することは、プログラムの他の部分からアクセスできるようになる前に、空白の最終フィールドを持つクラスのインスタンスの逆シリアル化または再構築中にのみ意味があります。 他のコンテキストで使用すると、プログラムの他の部分がこのフィールドの元の値を引き続き使用する場合など、予期しない影響を及ぼす可能性があります。

基になるフィールドがプリミティブ型の場合、アンラップ変換は、新しい値をプリミティブ型の値に変換しようとします。 この試行が失敗した場合、メソッドは IllegalArgumentExceptionをスローします。

ラップ解除が可能になった後、ID 変換または拡大変換によって新しい値を基になるフィールドの型に変換できない場合、メソッドは IllegalArgumentExceptionをスローします。

基になるフィールドが静的な場合、フィールドを宣言したクラスは、まだ初期化されていない場合に初期化されます。

フィールドは、ラップされていない可能性があり、拡大された新しい値に設定されます。

objの型でフィールドが非表示の場合、フィールドの値は上記の規則に従って設定されます。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象