|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 必需 | 可選 | 詳細資訊: 元素 | |||||||||
@Documented @Retention(value=RUNTIME) @Target(value=METHOD) public @interface DescriptorKey
描述註釋元素與 Descriptor 中欄位之間關聯方式的元註釋。它可以是 MBean 的 Descriptor,也可以是 MBean 中屬性、操作或建構子的 Descriptor,還可以是操作或建構子的參數的 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 產生時,通常的規則意味著它將有一個稱為 CacheSize 的型別為 long 的屬性。在給定上述定義的情況下,@Units 屬性將確保此屬性的 MBeanAttributeInfo 將具有一個 Descriptor,該 Descriptor 有一個稱為 units 的欄位,且其相應的值為 bytes。
類似地,如果註釋的形式如下:
@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 欄位定義不同的值。獲取方法上的註釋欄位也必須與相應設置方法上的註釋欄位一致。
從這些註釋中得到的 Descriptor 將與實作提供的任何 Descriptor 欄位合併,如 MBean 的 immutableInfo 欄位。註釋中的欄位必須與實作提供的這些欄位一致。
要轉換為描述符欄位的註釋元素可以是 Java 語言允許的任何型別,註釋或註釋陣列除外。欄位值由以下註釋元素的值導出:
| 註釋元素 | 描述符欄位 |
|---|---|
基本型別值(5、false 等) |
包裹值(Integer.valueOf(5)、Boolean.FALSE 等) |
類別常數(如 Thread.class) |
Class.getName() 得到的類別名稱(如 "java.lang.Thread") |
列舉常數(如 ElementType.FIELD) |
Enum.name() 得到的常數名稱(如 "FIELD") |
| 類別常數或列舉常數組成的陣列 | 將這些規則應用於每個元素而派生的字元串陣列 |
| 任何其他型別的值 ( String、String[]、int[] 等) |
相同的值 |
| 必需元素摘要 | |
|---|---|
String |
value
|
| 元素詳細資訊 |
|---|
public abstract String value
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 必需 | 可選 | 詳細資訊: 元素 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。