| 目次 | 前項目 | 次項目 | Java コアリフレクション |
package java.lang.reflect;public final class Method extends Object implements Member
Method は、クラスまたはインタフェースの 1 つのメソッドに関する情報およびそこへのアクセスを提供します。反射されるメソッドは、 abstract メソッド、クラス (static) メソッド、またはインスタンスメソッドのどれでも構いません。
Method オブジェクトを生成できるのは、Java 仮想マシンだけです。ユーザコードは、クラス Class のメソッド getMethod, getMethods, getDeclaredMethod, および getDeclaredMethods から Method 参照を獲得します。
Method では、invoke への実効パラメータを基本メソッドの形式パラメータと突合わせるときに拡張変換が可能ですが、縮小変換が行われると IllegalArgumentException をスローします。
public Class getDeclaringClass()
この Method オブジェクトが表すメソッドを宣言する、クラスまたはインタフェースの Class オブジェクトを返します。 public String getName()
この Method オブジェクトが表すメソッドの単純名を返します。 public int getModifiers()
この Method オブジェクトが表すメソッドの Java 言語修飾子を整数型にコード化して返します。修飾子の解読には、Modifier クラスを使います。修飾子のコード化は、Java 仮想マシン仕様の表 4.4 で定義されています。
public Class getReturnType()
この Method オブジェクトが表すメソッドの、形式返却値の型を表す Class オブジェクトを返します。 public Class[] getParameterTypes()
この Method オブジェクトが表すメソッドの形式パラメータ型を表す Class オブジェクトの配列を、宣言順に返します。基本メソッドがパラメータを取らない場合は、長さが 0 の配列を返します。 public Class[] getExceptionTypes()
この Method オブジェクトが表す基本メソッドがスローした、確認済み例外の型を表す Class オブジェクトの配列を返します。基本メソッドが確認済み例外をスローしない場合は、長さが 0 の配列を返します。 public boolean equals(Object obj)
この Method と指定オブジェクトを比較します。オブジェクトが同じ場合は true を、異なる場合は false を返します。2 つの Method オブジェクトの宣言クラス、名前、および形式パラメータ型が同じ場合、この 2 つは同じです。
このメソッドは、クラス Object の equals メソッドをオーバーライドします。
public int hashCode()
この Method のハッシュコードを返します。ハッシュコードは、Method の宣言クラス名およびその単純名のハッシュコードの排他論理和として計算されます。
このメソッドは、クラス Object の hashCode メソッドをオーバーライドします。
public String toString()
この Method オブジェクトが表す基本メソッドを記述する文字列を返します。文字列は基本メソッドの Java 言語修飾子としてフォーマットされ、もしあればその後に、メソッド返却値の型または void の完全修飾名、スペース、メソッドを宣言するクラスの完全修飾名、ピリオド、単純メソッド名、基本メソッドの形式パラメータ型の完全修飾名をコンマで区切ったリストの挿入句が続きます。基本メソッドが確認済み例外をスローする場合、パラメータリストのあとにスペース、単語 throws、スローする例外型の完全修飾名をコンマで区切ったリストが続きます。以下に例を示します:
public boolean java.lang.Object.equals(java.lang.Object)
public final java.lang.String java.lang.Thread.getName()
メソッド修飾子は、Java 言語仕様に指定の、標準順序で置かれます。つまり、最初に public, protected または private がきて、その後に以下の順でその他の修飾子が入ります: abstract, static, final, synchronized, および native
このメソッドは、クラス Object の toString メソッドをオーバーライドします。
指定オブジェクト上のこのpublic Object invoke(Object obj, Object[] args)throws NullPointerException, IllegalArgumentException,IllegalAccessException, InvocationTargetException
Method オブジェクトが表す基本メソッドを、指定パラメータを使って呼び出します。個々のパラメータは、プリミティブ形式パラメータに一致するように自動的にアンラップされ、プリミティブおよび参照の両パラメータは必要に応じて拡張変換に従います。基本メソッドが返す値がプリミティブ型を持つ場合、これは自動的にオブジェクトにラップされます。
static) メソッドの場合、指定オブジェクト引数を無視し、null にできる。null の場合、呼び出しは NullPointerException をスローする。それ以外の場合、指定オブジェクト引数が基本メソッドの宣言クラスまたはインタフェースのインスタンスでないと、呼び出しは IllegalArgumentException をスローする。Method オブジェクトが Java 言語アクセス制御を実行し、基本メソッドがアクセス不可能な場合、呼び出しは IllegalAccessException をスローする。args から獲得した実効パラメータ数値が、基本メソッドに必要な形式パラメータ数値と異なる場合、呼び出しは IllegalArgumentException をスローする。基本メソッドがパラメータを取らない場合、args は null にできる。args 配列内の各実効パラメータについて:null の場合、NullPointerException をスローして、変換が失敗する。オブジェクトのパラメータが標準 Java ラッパークラスのインスタンスでない場合、IllegalArgumentException をスローして、変換が失敗する。IllegalArgumentException をスローする。static) メソッドの場合、関連宣言クラスの基本メソッドと全く同じようにして呼び出される。static) メソッドでない場合、Java 言語仕様のセクション 15.11.4.4 に記載のダイナミックメソッド検索を使って呼び出される。この場合、ターゲットオブジェクトのクラスに基づいたオーバーライドが発生する。InvocationTargetException の新規例外オブジェクトに入る。このあとで、この新規例外をスローして invoke を異常終了させる。invoke は、メソッドが戻す値を返す。値にプリミティブ型がある場合、値は最初に適切なオブジェクトにラップされる。基本メソッドが宣言された void の場合、invoke は null を返す。