JavaTM 2 Platform
Std. Ed. v1.3

java.lang.reflect
クラス Method

java.lang.Object
  |
  +--java.lang.reflect.AccessibleObject
        |
        +--java.lang.reflect.Method
すべての実装インタフェース:
Member

public final class Method
extends AccessibleObject
implements Member

Method は、クラスまたはインタフェース上の 1 つのメソッドについての情報を提供し、そのメソッドにアクセスします。リフレクトされたメソッドは、クラスメソッドである場合も、インスタンスメソッドである場合もあります (これには abstract メソッドも含まれる)。

Method は呼び出される実パラメータを基となるメソッドの仮パラメータに一致させるときに、拡大変換を行うことを許可します。しかし、縮小変換が起きた場合には、メソッドは IllegalArgumentException をスローします

関連項目:
Member, Class, Class.getMethods(), Class.getMethod(String, Class[]), Class.getDeclaredMethods(), Class.getDeclaredMethod(String, Class[])

インタフェース java.lang.reflect.Member から継承したフィールド
DECLARED, PUBLIC
 
メソッドの概要
 boolean equals(Object obj)
          この Method を指定されたオブジェクトと比較します。
 Class getDeclaringClass()
          この Method オブジェクトで表されるメソッドを宣言する、クラスまたはインタフェースを表す Class オブジェクトを返します。
 Class[] getExceptionTypes()
          この Method オブジェクトによって表される基となるメソッドによってスローされるように宣言された例外の型を表す Class オブジェクトの配列を返します。
 int getModifiers()
          この Method オブジェクトで表されるメソッドの Java 言語修飾子を、整数として返します。
 String getName()
          この Method オブジェクトで表されるメソッド名を、String として返します。
 Class[] getParameterTypes()
          この Method オブジェクトで表されるメソッドの、仮パラメータの型を表す Class オブジェクトの配列を宣言順に返します。
 Class getReturnType()
          この Method オブジェクトで表されるメソッドの、正式な戻り値の型を表す Class オブジェクトを返します。
 int hashCode()
          この Method のハッシュコードを返します。
 Object invoke(Object obj, Object[] args)
          指定されたパラメータで指定するオブジェクトについて、この Method オブジェクトで表される基になるメソッドを呼び出します。
 String toString()
          この Method を説明する文字列を返します。
 
クラス java.lang.reflect.AccessibleObject から継承したメソッド
isAccessible, setAccessible, setAccessible
 
クラス java.lang.Object から継承したメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

メソッドの詳細

getDeclaringClass

public Class getDeclaringClass()
この Method オブジェクトで表されるメソッドを宣言する、クラスまたはインタフェースを表す Class オブジェクトを返します。
定義:
インタフェース Member 内の getDeclaringClass

getName

public String getName()
この Method オブジェクトで表されるメソッド名を、String として返します。
定義:
インタフェース Member 内の getName

getModifiers

public int getModifiers()
この Method オブジェクトで表されるメソッドの Java 言語修飾子を、整数として返します。修飾子の復号化を行うには、Modifier クラスを使用する必要があります。
定義:
インタフェース Member 内の getModifiers
関連項目:
Modifier

getReturnType

public Class getReturnType()
この Method オブジェクトで表されるメソッドの、正式な戻り値の型を表す Class オブジェクトを返します。

getParameterTypes

public Class[] getParameterTypes()
この Method オブジェクトで表されるメソッドの、仮パラメータの型を表す Class オブジェクトの配列を宣言順に返します。基になるメソッドがパラメータを持たない場合には、長さ 0 の配列を返します。

getExceptionTypes

public Class[] getExceptionTypes()
この Method オブジェクトによって表される基となるメソッドによってスローされるように宣言された例外の型を表す Class オブジェクトの配列を返します。メソッドがその throws 節で例外を宣言していない場合は、長さ 0 の配列を返します。

equals

public boolean equals(Object obj)
この Method を指定されたオブジェクトと比較します。オブジェクトが等しい場合は、true を返します。2 つの Method は、同じクラスによって宣言されており、名前、仮パラメータ型、および戻り値の型が同じ場合に等しいと見なされます。
オーバーライド:
クラス Object 内の equals
クラス java.lang.Object からコピーされたタグ:
パラメータ:
obj - 比較対象の参照オブジェクト
戻り値:
obj 引数に指定されたオブジェクトとこのオブジェクトが等しい場合は true、そうでない場合は false
関連項目:
Boolean.hashCode(), Hashtable

hashCode

public int hashCode()
この Method のハッシュコードを返します。ハッシュコードは、基になるメソッドの宣言クラス名とメソッドの名前に対するハッシュコードの排他的論理和として計算されます。
オーバーライド:
クラス Object 内の hashCode
クラス java.lang.Object からコピーされたタグ:
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
この Method を説明する文字列を返します。この文字列の書式は、存在する場合はメソッドのアクセス修飾子、メソッドの戻り値の型、スペース、メソッドを宣言するクラス、ピリオド、メソッド名、括弧で囲まれたコンマ区切りのメソッドの仮パラメータ型のリストが順番に続きます。メソッドが確認済の例外をスローする場合は、パラメータリストの後に、スペース、throw という単語、スローされる例外型のコンマ区切りのリストが順番に続きます。以下に例を示します。
    public boolean java.lang.Object.equals(java.lang.Object)
 

アクセス修飾子は、Java 言語仕様で規定された標準的な順序で格納されます。つまり、最初に publicprotected または private、 続いて abstractstaticfinalsynchronized native が置かれます。

オーバーライド:
クラス Object 内の toString
クラス java.lang.Object からコピーされたタグ:
戻り値:
このオブジェクトの文字列表現

invoke

public Object invoke(Object obj,
                     Object[] args)
              throws IllegalAccessException,
                     IllegalArgumentException,
                     InvocationTargetException
指定されたパラメータで指定するオブジェクトについて、この Method オブジェクトで表される基になるメソッドを呼び出します。個々のパラメータは、プリミティブな仮パラメータと一致させるために自動的にラップ解除され、プリミティブなパラメータと参照パラメータは両方とも必要に応じて拡大変換の対象になります。基になるメソッドによって返される値は、その値がプリミティブな型の場合は自動的にオブジェクト内にラップされます。

メソッド呼び出しは、次に示す順に進みます。

基になるメソッドが static の場合は、指定された obj の引数は無視されます。これは null の可能性があります。

static でない場合、メソッドはインスタンスメソッドです。 指定されたオブジェクト引数が null の場合、呼び出しは NullPointerException をスローします。そうでない場合、指定されたオブジェクト引数が基になるメソッド (またはそのサブクラスか実装側) を宣言するクラスまたはインタフェースのインスタンスではない場合、呼び出しは IllegalArgumentException をスローします。

この Method オブジェクトにより Java 言語のアクセス制御が行われて基になるメソッドがアクセスできない場合、呼び出しは IllegalAccessException をスローします。

args によって指定された実パラメータの数が、基になるメソッドが必要とする仮パラメータの数と異なる場合、呼び出しは IllegalArgumentException をスローします。

args 配列によって指定された実パラメータに関して以下に説明します。

対応する仮パラメータがプリミティブな型の場合は、オブジェクトの値をプリミティブな型の値に変換するためラップ解除変換が試行されます。この試行が失敗する場合、呼び出しは IllegalArgumentException をスローします。

ラップ解除のあと、パラメータの値がメソッド呼び出し変換によって対応する仮パラメータ型に変換できない場合、呼び出しは IllegalArgumentException をスローします。

基になるメソッドがインスタンスメソッドの場合は、Java 言語仕様のセクション 15.11.4.4 に記述されているように、動的メソッド検索を使用して呼び出されます。この際、特に、ターゲットオブジェクトの実行時の型に基づいたオーバーライドが起きます。

基になるメソッドが static の場合、メソッドを宣言したクラスがまだ初期化されていないときは、このクラスが初期化されます。基になるメソッドは直接呼び出されます。

制御は呼び出されたメソッドに移ります。メソッドが例外をスローして終了した場合、例外は InvocationTargetException に配置され、次に invoke の呼び出し側にスローされます。

メソッドが正常に終了する場合、メソッドが返す値は invoke の呼び出し側に返されます。値がプリミティブな型の場合、値は最初にオブジェクト内に適切にラップされます。基になるメソッドの戻り値の型が void の場合、 呼び出しは null を返します。

例外:
IllegalAccessException - 基になるメソッドにアクセスできない場合
IllegalArgumentException - 実パラメータと仮パラメータの数が異なる場合、またはラップ解除変換が失敗に終わった場合
InvocationTargetException - 基になるメソッドが例外をスローする場合
NullPointerException - 指定されたオブジェクトが null で、メソッドがインスタンスメソッドの場合
ExceptionInInitializerError - このメソッドによる初期化が失敗した場合

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.