JavaTM 2 Platform
Std. Ed. v1.3

java.lang.reflect
インタフェース InvocationHandler


public interface InvocationHandler

InvocationHandler は、プロキシインスタンスの呼び出しハンドラが実装するインタフェースです。

プロキシインスタンスには、それぞれに関連した呼び出しハンドラがあります。プロキシインスタンスでメソッドが呼び出されると、メソッドの呼び出しが符号化され、各プロシキインスタンスの呼び出しハンドラの invoke メソッドにディスパッチされます。

導入されたバージョン:
JDK1.3
関連項目:
Proxy

メソッドの概要
 Object invoke(Object proxy, Method method, Object[] args)
          プロキシインスタンスでメソッド呼び出しを処理し、その結果を返します。
 

メソッドの詳細

invoke

public Object invoke(Object proxy,
                     Method method,
                     Object[] args)
              throws Throwable
プロキシインスタンスでメソッド呼び出しを処理し、その結果を返します。関連したプロキシインスタンスでメソッドが呼び出されると、このメソッドは呼び出しハンドラで呼び出されます。
パラメータ:
proxy - メソッドが呼び出されるプロキシインスタンス
method - プロキシインスタンスで呼び出されるインタフェースメソッドに対応する Method インスタンス。Method オブジェクトの宣言クラスは、メソッドを宣言したインタフェースとなる。プロキシクラスがメソッドの継承に使うプロキシインタフェースのスーパーインタフェースとなる場合もある
args - プロキシインスタンスでのメソッド呼び出し時に渡される引数値を格納するオブジェクト配列。インタフェースメソッドが引数をとらない場合、null となる。プリミティブ型引数は java.lang.Integer または java.lang.Boolean のような適切なプリミティブ型ラッパークラスのインスタンスにラップされる
戻り値:
プロキシインスタンスでのメソッド呼び出しからの戻り値。インタフェースメソッドの宣言された戻り値の型がプリミティブ型の場合は、このメソッドの戻り値は対応するプリミティブラッパークラスのインスタンスでなければならない。そうでない場合、宣言された戻り値の型に割り当てられる型でなければならない。このメソッドによる戻り値が null で、インタフェースメソッドの戻り値がプリミティブ型の場合、プロキシインスタンスでのメソッド呼び出しによって NullPointerException がスローされる。これ以外のケースで、このメソッドの戻り値と上記のようなインタフェースメソッドの宣言された戻り値の型との間に互換性がない場合、ClassCastException はプロキシインスタンスでのメソッド呼び出しによってスローされることになる
例外:
Throwable - プロキシインスタンスでのメソッド呼び出しからスローされる例外。この例外のタイプは、インタフェースメソッドの throws 節に宣言される例外タイプか、または、チェックされない例外タイプの java.lang.RuntimeException または java.lang.Error に割り当てられなければならない。このメソッドによってスローされるチェック例外が、インタフェースメソッドの throws 節に宣言された例外タイプに割り当てられない場合、このメソッドがスローした例外を格納する UndeclaredThrowableException がプロキシインスタンスでのメソッド呼び出しによってスローされることになる
関連項目:
UndeclaredThrowableException

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.