Field.Set(Object, 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 、フィールドが非静的である場合

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

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

注釈

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

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

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

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

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

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

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

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

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

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

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

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

java.lang.reflect.Field.set(java.lang.Object, java.lang.Object)Java ドキュメント。

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

適用対象