JavaTM Platform
Standard Ed. 6

javax.management
注釈型 DescriptorKey


@Documented
@Retention(value=RUNTIME)
@Target(value=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 には次のフィールドが含まれます。

名前
units"bytes"
descriptionResourceKey"bytes.key"
descriptionResourceBundleBaseName "com.example.foo.MBeanResources"
 

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

 

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

 

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

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

 

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

 

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

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

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

必須要素の概要
 String value
           
 

要素の詳細

value

public abstract String value

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。