@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