-
@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
には次のフィールドが含まれます。名前 値 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フィールド プリミティブ値( 5
、false
など)ラップされた値( Integer.valueOf(5)
、Boolean.FALSE
など)クラス定数( Thread.class
など)Class.getName()
から取得したクラス名("java.lang.Thread"
など)列挙型定数( ElementType.FIELD
など)Enum.name()
から取得した定数名("FIELD"
など)クラス定数またはenum定数の配列 これらのルールを各要素に適用して得られる文字列配列 その他の型の値
(String
、String[]
、int[]
など)同じ値 - 導入されたバージョン:
- 1.6
-
-
要素の詳細
-
value
String value
記述子キーを返します。- 戻り値:
- 記述子キー
-
-