| 目次 | 前項目 | 次項目 | Java コアリフレクション |
package java.lang.reflect;public final class Field extends Object implements Member
Field は、クラスやインタフェースの 1 つのフィールドに関する情報およびそこへのアクセスを提供します。反射されるフィールドは、クラス変数 (static フィールド) でもインスタンス変数 (インスタンスフィールド) でも構いません。
Field オブジェクトを生成できるのは、Java 仮想マシンだけです。ユーザコードは、クラス Class のメソッド getField, getFields, getDeclaredField, および getDeclaredFields から Field 参照を獲得します。
Field では、get や set の演算中に拡張変換が可能ですが、縮小変換が行われると IllegalArgumentException をスローします。
public Class getDeclaringClass()
この Field オブジェクトが表すフィールドを宣言する、クラスまたはインタフェースを表す Class オブジェクトを返します。 public String getName()
この Field オブジェクトが表すフィールドの単純名を返します。 public int getModifiers()
この Field オブジェクトが表すフィールドの Java 言語修飾子を、整数型にコード化して返します。修飾子の解読には、Modifier クラスを使います。修飾子のコード化は、Java 仮想マシン仕様の表 4.3 で定義されています。
public Class getType()
この Field オブジェクトが表すフィールドの宣言型を識別する、Class オブジェクトを返します。 public boolean equals(Object obj)
指定の Object とこの Field を比較します。この 2 つが同じときは true を返し、異なるときは false を返します。2 つの Field オブジェクトの宣言クラスと名前が同じ場合、この 2 つのオブジェクトは同じです。
このメソッドは、クラス Object の equals メソッドをオーバーライドします。
public int hashCode()
この Field オブジェクトのハッシュコードを返します。これは Field の宣言クラス名およびその単純名の排他的論理和として計算されます。
このメソッドは、クラス Object の hashCode メソッドをオーバーライドします。
public String toString()
この Field を記述する String オブジェクトを返します。形式は、表示フィールドの Java 言語修飾子で、もしあれば、その後にフィールド型、スペース、フィールドを宣言するクラスの完全な修飾名、ピリオド、フィールド名が続きます。以下に例を示します:
public static final int java.lang.Thread.MIN_PRIORITY
private int java.io.FileDescriptor.fd
修飾子は、Java 言語仕様に指定の標準順序で置かれます。つまり、public, protected, または private が最初にきて、その後に以下の順序でその他の修飾子が続きます: static, final, transient, および volatile
このメソッドは、クラス Object の toString メソッドをオーバーライドします。
指定オブジェクト上のこのpublic Object get(Object obj)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field が表すフィールド値を戻します。値はプリミティブ型を持つ場合、自動的にオブジェクトにラップされます。
static フィールドの場合、オブジェクト引数を無視し、null にできる。null の場合、メソッドは NullPointerException をスローする。指定のオブジェクトが基本フィールドを宣言するクラスまたはインタフェースのインスタンスでない場合、メソッドは IllegalArgumentException をスローする。Field オブジェクトが Java 言語アクセス制御を実行し、基本フィールドがアクセス不能な場合、メソッドは IllegalAccessException をスローする。Field.get のプリミティブなものも提供されます。これらにはファイナルラッピング変換は不要です。これらについては、以下で説明します。指定オブジェクト上のこのpublic boolean getBoolean(Object obj)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、boolean として返します。手続きの詳細は、Field.get を参照してください。
基本フィールドの型が boolean でないと、メソッドは IllegalArgumentException をスローします。
指定オブジェクト上のこのpublic byte getByte(Object obj)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、byte として返します。手続きの詳細は、Field.get を参照してください。
基本フィールドの型が byte でないと、メソッドは IllegalArgumentException をスローします。
指定オブジェクト上のこのpublic char getChar(Object obj)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、char として返します。手続きの詳細は、Field.get を参照してください。
基本フィールド値の型が char でないと、メソッドは IllegalArgumentException をスローします。
指定オブジェクト上のこのpublic short getShort(Object obj)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、short として返します。手続きの詳細は、Field.get を参照してください。
識別変換または拡張変換を用いて、基本フィールド値を short に変換できないと、メソッドは IllegalArgumentException をスローします。
指定オブジェクト上のこのpublic int getInt(Object obj)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、int として返します。手続きの詳細は、Field.get を参照してください。
識別変換または拡張変換を用いて、基本フィールド値を int に変換できないと、メソッドは IllegalArgumentException をスローします。
指定オブジェクト上のこのpublic long getLong(Object obj)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、long として返します。手続きの詳細は、Field.get を参照してください。
識別変換または拡張変換を用いて、基本フィールド値を long に変換できないと、メソッドは IllegalArgumentException を返します。
指定オブジェクト上のこのpublic float getFloat(Object obj)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、float として返します。手続きの詳細は、Field.get を参照してください。
識別変換または拡張変換を用いて、基本フィールド値を float に変換できないと、メソッドは IllegalArgumentException をスローします。
指定オブジェクト上のこのpublic double getDouble(Object obj)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、double として返します。手続きの詳細は、Field.get を参照してください。
識別変換または拡張変換を用いて、基本フィールド値を double に変換できないと、メソッドは IllegalArgumentException をスローします。
指定オブジェクト引数上のこのpublic void set(Object obj, Object value)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールドを、指定の新規値に設定します。基本フィールドにプリミティブ型がある場合、新規値は自動的にアンラップされます。
static フィールドの場合、オブジェクト引数を無視し、 null にできる。null の場合、メソッドは NullPointerException をスローする。指定オブジェクト引数が、基本フィールドを宣言するクラスまたはインタフェースのインスタンスでない場合、メソッドは IllegalArgumentException をスローする。Field オブジェクトが Java 言語アクセス制御を実行し、基本フィールドがアクセス不可能な場合、メソッドは IllegalAccessException をスローする。final フィールドの場合、メソッドは IllegalAccessException をスローする。null の場合、NullPointerException をスローすると変換が失敗する。新規オブジェクト値が標準 Java ラッパークラスのインスタンスでない場合、IllegalArgumentException をスローすると変換が失敗する。IllegalArgumentException をスローする。Field.set のプリミティブなものも提供されます。これらにはファイナルラッピング変換は不要です。これらについては、以下で説明します。指定オブジェクト引数上のpublic void setBoolean(Object obj, boolean z)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、指定の boolean 値に設定します。手続きの詳細は、Field.set を参照してください。
基本フィールド型が boolean でないと、メソッドは IllegalArgumentException をスローします。
指定オブジェクト引数上のこのpublic void setByte(Object obj, byte b)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field が表すフィールド値を、指定の byte 値に設定します。手続きの詳細は、Field.set を参照してください。
識別変換または拡張変換を使って、新規値を基本フィールド型に変換できない場合、メソッドは IllegalArgumentException をスローします。
指定オブジェクト引数上のこのpublic void setChar(Object obj, char c)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、指定の char 値に設定します。手続きの詳細は、Field.set を参照してください。
識別変換または拡張変換を使って、新規値を基本フィールド型に変換できない場合、メソッドは IllegalArgumentException をスローします。
指定オブジェクト引数上のこのpublic void setShort(Object obj, short s)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、指定の short 値に設定します。手続きの詳細は、Field.set を参照してください。
識別変換または拡張変換を使って、新規値を基本フィールド型に変換できない場合、メソッドは IllegalArgumentException をスローします。
指定オブジェクト引数上のこのpublic void setInt(Object obj, int i)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、指定の int 値に設定します。手続きの詳細は、Field.set を参照してください。
識別変換または拡張変換を使って、新規値を基本フィールド型に変換できない場合、メソッドは IllegalArgumentException をスローします。
指定オブジェクト引数上のこのpublic void setLong(Object obj, long l)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、指定の long 値に設定します。手続きの詳細は、Field.set を参照してください。
識別変換または拡張変換を使って、新規値を基本フィールド型に変換できない場合、メソッドは IllegalArgumentException をスローします。
指定オブジェクト引数上のこのpublic void setFloat(Object obj, float f)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、指定の float 値に設定します。手続きの詳細は、Field.set を参照してください。
識別変換または拡張変換を使って、新規値を基本フィールド型に変換できない場合、メソッドは IllegalArgumentException をスローします。
指定オブジェクト引数上のこのpublic void setDouble(Object obj, double d)throws NullPointerException, IllegalArgumentException,IllegalAccessException
Field オブジェクトが表すフィールド値を、指定の double 値に設定します。手続きの詳細は、Field.set を参照してください。
基本フィールド型が double でないと、メソッドは IllegalArgumentException をスローします。