Spec-Zone.ru › OpenJDK 24

Интерфейс аннотаций DescriptorKey

@Documented @Retention(RUNTIME) @Target(METHOD) public @interface DescriptorKey

Мета-аннотация, описывающая, как элемент аннотации относится к полю в Descriptor. Это может быть 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();
 }
 

Когда Standard 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 будет содержать следующие поля:

Поля Descriptor
Имя Значение
units "bytes"
descriptionResourceKey "bytes.key"
descriptionResourceBundleBaseName "com.example.foo.MBeanResources"

Аннотация, такая как @Units, может быть применена к:

  • интерфейсу Standard MBean или MXBean;
  • методу в таком интерфейсе;
  • параметру метода в интерфейсе Standard MBean или MXBean, когда этот метод является операцией (а не геттером или сеттером для атрибута);
  • публичному конструктору в классе, реализующем Standard MBean или MXBean;
  • параметру в таком конструкторе.

Другие применения аннотации игнорируются.

Аннотации интерфейсов проверяются только на самом интерфейсе, определяющем интерфейс управления Standard MBean или MXBean, а не на его родительских интерфейсах. Аннотации методов проверяются только в самом конкретном интерфейсе, в котором метод появляется; другими словами, если дочерний интерфейс переопределяет метод из родительского интерфейса, то учитываются только аннотации @DescriptorKey в методе в дочернем интерфейсе.

Поля Descriptor, внесенные таким образом различными аннотациями к одному и тому же элементу программы, должны быть согласованными. То есть две разные аннотации, или два члена одной аннотации, не должны определять разные значения для одного и того же поля Descriptor. Поля из аннотаций на методе-геттере также должны быть согласованы с полями из аннотаций на соответствующем методе-сеттере.

Descriptor, полученный из этих аннотаций, будет объединен с любыми полями Descriptor, предоставленными реализацией, такими как поле immutableInfo для MBean. Поля из аннотаций должны быть согласованы с этими полями, предоставленными реализацией.

Элемент аннотации, который должен быть преобразован в поле descriptor, может быть любого типа, разрешенного языком Java, за исключением аннотации или массива аннотаций. Значение поля выводится из значения элемента аннотации следующим образом:

Типы полей Descriptor
Элемент аннотации Поле Descriptor
Примитивное значение (5, false и т.д.) Значение обернутой структуры (Integer.valueOf(5), Boolean.FALSE и т.д.)
Постоянная класса (например, Thread.class) Имя класса из Class.getName() (например, "java.lang.Thread")
Постоянная перечисления (например, ElementType.FIELD) Имя константы из Enum.name() (например, "FIELD")
Массив постоянных классов или перечислений Строковый массив, полученный путем применения этих правил к каждому элементу
Значение любого другого типа
(String, String[], int[] и т.д.)
То же самое значение
Since:
1.6

Краткое описание обязательных элементов

Модификатор и тип Обязательный элемент Описание
String value
Возвращает ключ descriptor.

Подробное описание элементов

value

String value
Возвращает ключ descriptor.
Returns:
ключ descriptor

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.management/javax/management/DescriptorKey.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API