モジュール java.management

クラスCompositeDataInvocationHandler

java.lang.Object
javax.management.openmbean.CompositeDataInvocationHandler
すべての実装されたインタフェース:
InvocationHandler

public class CompositeDataInvocationHandler extends Object implements InvocationHandler

getterメソッドをCompositeDataに転送するInvocationHandlerです。 インタフェースに取得メソッドだけが含まれる場合(String getName()boolean isActive()など)、このクラスをProxyクラスと組み合わせて使用することで、各取得メソッドがCompositeData内の対応する項目の値を返すインタフェースの実装を生成できます。

たとえば、次のようなインタフェースを考えましょう。

   public interface NamedNumber {
       public int getNumber();
       public String getName();
   }
   
また、CompositeDataは次のように構築されます。
   CompositeData cd =
       new CompositeDataSupport(
           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がこのオブジェクトのものと等しい(同一である必要はない)場合のみです。 invokeに与えられたメソッドが、Objectから継承されたメソッドint hashCode()である場合、 equalsのこの定義と一致する値を返します: 2つのオブジェクトがequalsに従って等しい場合、それらは同じhashCodeを持ちます。

導入されたバージョン:
1.6