-
@Documented @Retention(RUNTIME) @Target(METHOD) public @interface DescriptorKey
描述注释元素如何与
Descriptor
中的字段相关的元标注 。 这可以是MBean的描述符,也可以是MBean中的属性,操作或构造函数,也可以是操作或构造函数的参数。考虑这个注释,例如:
@Documented @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Units { @DescriptorKey("units") String value(); }
而这个使用注释:
public interface CacheControlMBean { @Units("bytes") public long getCacheSize(); }
当标准MBean由
CacheControlMBean
,通常的规则意味着它将具有CacheSize
类型为long
的属性,类型为long
。 的@Units
注释,考虑到上述定义,将确保MBeanAttributeInfo
该属性将具有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 Fields Name Value units "bytes" descriptionResourceKey "bytes.key" descriptionResourceBundleBaseName "com.example.foo.MBeanResources"Descriptor
将包含以下字段:诸如
@Units
的注释可以应用于:- 标准MBean或MXBean接口;
- 这种接口中的一种方法;
- 当该方法是一个操作(而不是属性的getter或setter)时,标准MBean或MXBean接口中的方法的参数;
- 该类中的公共构造函数实现标准MBean或MXBean;
- 这样的构造函数中的一个参数。
忽略注释的其他用途。
仅在定义标准MBean或MXBean的管理界面的准确界面上检查接口注释,而不是在其父接口上。 仅在方法出现的最具体的界面中检查方法注释; 换句话说,如果一个子接口覆盖了一个父接口的方法,那么在子接口中的方法中只会
@DescriptorKey
注解。在同一程序元素上通过不同注释以这种方式贡献的描述符字段必须是一致的。 也就是说,两个不同的注释或相同注释的两个成员不能为同一个描述符字段定义不同的值。 在getter方法上注释的字段也必须与相应setter方法上注释的字段一致。
由这些注释生成的描述符将与实现提供的任何描述符字段合并,例如MBean的
immutableInfo
字段。 注释中的字段必须与实现提供的这些字段一致。要转换为描述符字段的注释元素可以是Java语言允许的任何类型,除了注释或注释数组。 该字段的值从注释元素的值派生如下:
Descriptor Field Types Annotation element Descriptor field Primitive value (5
,false
, etc) Wrapped value (Integer.valueOf(5)
,Boolean.FALSE
, etc) Class constant (e.g.Thread.class
) Class name fromClass.getName()
(e.g."java.lang.Thread"
) Enum constant (e.g.ElementType.FIELD
) Constant name fromEnum.name()
(e.g."FIELD"
) Array of class constants or enum constants String array derived by applying these rules to each element Value of any other type
(String
,String[]
,int[]
, etc) The same value- 从以下版本开始:
- 1.6
-
-
Element Detail
-
value
String value
返回描述符键。- 结果
- 描述符键
-
-