public interface InvocationHandler
InvocationHandler
は、プロキシ・インスタンスの呼出しハンドラが実装するインタフェースです。
プロキシ・インスタンスには、それぞれに関連した呼出しハンドラがあります。プロキシ・インスタンスでメソッドが呼び出されると、メソッドの呼出しが符号化され、各プロキシ・インスタンスの呼出しハンドラのinvoke
メソッドにディスパッチされます。
Proxy
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
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。