モジュール java.management
パッケージ javax.management

注釈型DescriptorKey


  • @Documented
    @Retention(RUNTIME)
    @Target(METHOD)
    public @interface DescriptorKey

    注釈要素とDescriptor内のフィールドとの関係を記述するメタ注釈です。 MBean、MBean内の属性、オペレーション、コンストラクタ、あるいはオペレーションまたはコンストラクタのパラメータ用のDescriptorを注釈要素にできます。

    例として、次のような注釈について考えます。

     @Documented
     @Target(ElementType.METHOD)
     @Retention(RetentionPolicy.RUNTIME)
     public @interface Units {
         @DescriptorKey("units")
         String value();
     }
     

    この注釈を次のように使用できます。

     public interface CacheControlMBean {
         @Units("bytes")
         public long getCacheSize();
     }
     

    Standard MBeanがCacheControlMBeanから作成される場合、通常のルールでは、long型のCacheSizeという名前の属性になります。 上記の定義が指定された場合、@Units注釈により、この属性のMBeanAttributeInfoには、対応する値bytesを持つunitsという名前のフィールドがあるDescriptorが含まれるようになります。

    同様に、次のような注釈について考えます。

     @Documented
     @Target(ElementType.METHOD)
     @Retention(RetentionPolicy.RUNTIME)
     public @interface Units {
         @DescriptorKey("units")
         String value();
    
         @DescriptorKey("descriptionResourceKey")
         String resourceKey() default "";
    
         @DescriptorKey("descriptionResourceBundleBaseName")
         String resourceBundleBaseName() default "";
     }
     

    この注釈を、次のように使用します。

     public interface CacheControlMBean {
         @Units("bytes",
                resourceKey="bytes.key",
                resourceBundleBaseName="com.example.foo.MBeanResources")
         public long getCacheSize();
     }
     

    この場合、生成されるDescriptorには次のフィールドが含まれます。

    Descriptorフィールド
    名前
    units"bytes"
    descriptionResourceKey"bytes.key"
    descriptionResourceBundleBaseName "com.example.foo.MBeanResources"

    @Unitsなどの注釈の適用先を次に示します。

    • Standard MBeanまたはMXBeanインタフェース
    • この種のインタフェース内のメソッド
    • Standard MBeanまたはMXBeanインタフェース内のメソッドのパラメータ(そのメソッドが属性のgetterでもsetterでもなく、オペレーションである場合)
    • Standard MBeanまたはMXBeanを実装するクラス内のpublicコンストラクタ
    • この種のコンストラクタ内のパラメータ

    上記以外の注釈の使用法は、無視されます。

    インタフェース注釈のチェックは、親インタフェース上ではなく、Standard MBeanまたはMXBeanの管理インタフェースを定義するインタフェース上のみで行われます。 メソッド注釈のチェックは、そのメソッドが出現するもっとも限定的なインタフェースで行われます。つまり、子インタフェースが親インタフェースからのメソッドをオーバーライドする場合、子インタフェース内のメソッドの@DescriptorKey注釈のみが考慮されます。

    同一のプログラム要素上のさまざまな注釈が、この方法でDescriptorフィールドに寄与する場合、Descriptorフィールドは一致している必要があります。 つまり、2つの異なる注釈、または1つの注釈の2つのメンバーが、同一のDescriptorフィールドに異なる値を定義することはできません。 getterメソッドの注釈に由来するフィールドは、対応するsetterメソッドの注釈に由来するフィールドとも一致している必要があります。

    これらの注釈から生成されるDescriptorは、MBeanの immutableInfoフィールドなどの、実装の提供するすべてのDescriptorフィールドとマージされます。 注釈に由来するフィールドは、実装により提供されるこれらのフィールドと一致している必要があります。

    注釈要素を記述子フィールドに変換する場合は、注釈要素をJava言語で許可される任意の型にできます。ただし、注釈または注釈の配列は除きます。 このフィールドの値は、次に示すように注釈要素の値から導かれます。

    Descriptorフィールド・タイプ
    注釈要素Descriptorフィールド
    プリミティブ値(5falseなど) ラップされた値(Integer.valueOf(5)Boolean.FALSEなど)
    クラス定数(Thread.classなど) Class.getName()から取得したクラス名("java.lang.Thread"など)
    列挙型定数(ElementType.FIELDなど) Enum.name()から取得した定数名("FIELD"など)
    クラス定数またはenum定数の配列 これらのルールを各要素に適用して得られる文字列配列
    その他の型の値
    (StringString[]int[]など)
    同じ値
    導入されたバージョン:
    1.6
    • 必須要素のサマリー

      必須要素 
      修飾子と型 必須要素 説明
      String value
      ディスクリプタ・キーを返します。
    • 要素の詳細

      • value

        String value
        ディスクリプタ・キーを返します。
        戻り値:
        ディスクリプタ・キー