| 
 | JavaTM 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 Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 必需 | 可选 | 详细信息: 元素 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。