|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object javax.management.openmbean.CompositeDataInvocationHandler
public class CompositeDataInvocationHandler
取得メソッドを CompositeData
に転送する InvocationHandler
です。インタフェースに取得メソッドだけが含まれる場合 (String getName()
や boolean isActive()
) など)、このクラスを Proxy
クラスと組み合わせて使用することで、各取得メソッドが CompositeData
内の対応する項目の値を返すインタフェースの実装を生成できます。
たとえば、次のようなインタフェースを考えましょう。
また、public interface NamedNumber { public int getNumber(); public String getName(); }
CompositeData
は次のように構築されます。
次のようにして、CompositeData cd = newCompositeDataSupport
( someCompositeType, new String[] {"number", "name"}, new Object[] {5, "five"} );
NamedNumber
を実装し、オブジェクト cd
を利用するオブジェクトを構築できます。
InvocationHandler handler = new CompositeDataInvocationHandler(cd); NamedNumber nn = (NamedNumber) Proxy.newProxyInstance(NamedNumber.class.getClassLoader(), new Class[] {NamedNumber.class}, handler);
nn.getNumber()
の呼び出しにより、5 が返されます。
取得メソッドで定義されたプロパティーの最初の文字が大文字の場合、このハンドラは最初に CompositeData
内で大文字で始まる項目を検索します。見つからない場合、対応する小文字またはコードポイントで始まる項目を検索します。getNumber()
という名前の取得メソッドの場合、ハンドラは最初に Number
という名前の項目を検索し、次に number
を検索します。取得メソッドの名前が getnumber()
である場合、その項目名は number
でなければなりません。
invoke
に渡されるメソッドが Object
から継承した boolean equals(Object)
メソッドである場合、これが true を返すのは、引数が Proxy
で、その InvocationHandler
が CompositeDataInvocationHandler
でもあり、補助 CompositeData
がこのオブジェクトの CompositeData
と等しい (同一である必要はない) 場合だけです。invoke
に渡されるメソッドが、Object
から継承される int hashCode()
メソッドである場合、この equals
の定義と一致する値が返されます。equals
に従って 2 つのオブジェクトが等しい場合、どちらも同じ hashCode
を持ちます。
コンストラクタの概要 | |
---|---|
CompositeDataInvocationHandler(CompositeData compositeData)
指定した CompositeData を利用するハンドラを構築します。 |
メソッドの概要 | |
---|---|
CompositeData |
getCompositeData()
コンストラクタに指定された CompositeData を返します。 |
Object |
invoke(Object proxy,
Method method,
Object[] args)
プロキシインスタンスでメソッド呼び出しを処理し、その結果を返します。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public CompositeDataInvocationHandler(CompositeData compositeData)
指定した CompositeData
を利用するハンドラを構築します。
compositeData
- 取得メソッドに情報を提供する CompositeData
IllegalArgumentException
- compositeData
が null の場合メソッドの詳細 |
---|
public CompositeData getCompositeData()
CompositeData
を返します。
CompositeData
。null は不可public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
InvocationHandler
の記述:
InvocationHandler
内の invoke
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 Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。