-
@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
。 的@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)时,Standard MBean或MXBean接口中方法的参数;
- 实现Standard MBean或MXBean的类中的公共构造函数;
- 这种构造函数中的参数。
注释的其他用法将被忽略。
仅在定义标准MBean或MXBean的管理接口的确切接口上检查接口注释,而不是在其父接口上。 仅在方法出现的最具体的界面中检查方法注释; 换句话说,如果子接口覆盖父接口中的方法,则仅考虑子接口中方法中的
@DescriptorKey
注释。以这种方式通过不同注释在同一程序元素上贡献的描述符字段必须是一致的。 也就是说,两个不同的注释或相同注释的两个成员不能为同一个Descriptor字段定义不同的值。 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
返回描述符键。- 结果
- 描述符密钥
-
-