モジュール java.management

クラス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
    • コンストラクタの詳細

      • CompositeDataInvocationHandler

        public CompositeDataInvocationHandler​(CompositeData compositeData)

        指定した CompositeDataを利用するハンドラを構築します。

        パラメータ:
        compositeData - 取得メソッドに情報を提供するCompositeData
        例外:
        IllegalArgumentException - compositeDataがnullである場合。
    • メソッドの詳細

      • getCompositeData

        public CompositeData getCompositeData()
        コンストラクタに指定されたCompositeDataを返します。
        戻り値:
        このハンドラが利用するCompositeData nullは不可。