|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 必須 | オプション | 詳細: 要素 | |||||||||
@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 フィールド |
|---|---|
プリミティブ値 (5、false など) |
ラップされた値 (Integer.valueOf(5)、Boolean.FALSE など) |
クラス定数 (例、Thread.class など) |
Class.getName() から取得したクラス名 ("java.lang.Thread" など) |
enum 定数 (ElementType.FIELD など) |
Enum.name() から取得した定数名 ("FIELD" など) |
| クラス定数または enum 定数の配列 | これらのルールを各要素に適用して得られる文字列配列 |
| その他の型の値 ( String、String[]、int[] など) |
同じ値 |
| 必須要素の概要 | |
|---|---|
String |
value
|
| 要素の詳細 |
|---|
public abstract String value
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 必須 | オプション | 詳細: 要素 | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。