Класс EventFactory
public final class EventFactory extends Object
Настоятельно рекомендуется определять событие во время компиляции, если известен макет поля, чтобы виртуальная машина Java (JVM) могла оптимизировать код, возможно, удалить всю инструментацию, если Flight Recorder не активен или если значение включения для данного события установлено в false.
Чтобы определить событие во время компиляции, см. Event.
Следующий пример показывает, как реализовать динамический Event класс.
List<ValueDescriptor> fields = new ArrayList<>();
List<AnnotationElement> messageAnnotations = Collections.singletonList(new AnnotationElement(Label.class, "Message"));
fields.add(new ValueDescriptor(String.class, "message", messageAnnotations));
List<AnnotationElement> numberAnnotations = Collections.singletonList(new AnnotationElement(Label.class, "Number"));
fields.add(new ValueDescriptor(int.class, "number", numberAnnotations));
String[] category = { "Example", "Getting Started" };
List<AnnotationElement> eventAnnotations = new ArrayList<>();
eventAnnotations.add(new AnnotationElement(Name.class, "com.example.HelloWorld"));
eventAnnotations.add(new AnnotationElement(Label.class, "Hello World"));
eventAnnotations.add(new AnnotationElement(Description.class, "Helps programmer getting started"));
eventAnnotations.add(new AnnotationElement(Category.class, category));
EventFactory f = EventFactory.create(eventAnnotations, fields);
Event event = f.newEvent();
event.set(0, "hello, world!");
event.set(1, 4711);
event.commit();
- С момента:
- 9
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static EventFactory |
create |
Создает объект EventFactory. |
EventType |
getEventType() |
Возвращает тип события, связанный с этим фабрикой событий. |
Event |
newEvent() |
Создает событие, чтобы его можно было заполнить данными и записать в систему Flight Recorder. |
void |
register() |
Регистрирует не зарегистрированное событие. |
void |
unregister() |
Дерегистрирует событие, связанное с этой фабрикой событий. |
Подробное описание методов
create
public static EventFactory create(List<AnnotationElement> annotationElements, List<ValueDescriptor> fields)
EventFactory. Порядок описателей значений указывает индекс, используемый при установке значений события.
- Параметры:
-
annotationElements- список элементов аннотации, описывающих аннотации события, неnull -
fields- список описателей, описывающих поля события, неnull - Возвращает:
- фабрику событий, не
null - Исключения:
-
IllegalArgumentException- если вход недопустим. Например, вход может быть недопустим, если тип поля или имя не допустимы в языке Java или элемент аннотации ссылается на тип, который невозможно найти. -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетFlightRecorderPermission("registerEvent") - См. также:
newEvent
public Event newEvent()
Используйте метод Event.set(int, Object) для установки значения.
- Возвращает:
- экземпляр события, не
null
getEventType
public EventType getEventType()
- Возвращает:
- тип события, связанный с этой фабрикой событий, не
null - Исключения:
-
IllegalStateException- если фабрика событий создана с аннотациейRegistered(false)и класс события не зарегистрирован вручную до вызова этого метода
register
public void register()
По умолчанию класс события, связанный с этой фабрикой событий, регистрируется при создании фабрики событий, если у события нет аннотации Registered.
Зарегистрированный класс события может записывать данные в Flight Recorder, а метаданные события можно получить, вызвав FlightRecorder.getEventTypes().
Если класс события, связанный с этой фабрикой событий, уже зарегистрирован, вызов этого метода игнорируется.
- Исключения:
-
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетFlightRecorderPermission("registerEvent") - См. также:
unregister
public void unregister()
Незарегистрированный класс события не может записывать данные в Flight Recorder, и метаданные события нельзя получить, вызвав FlightRecorder.getEventTypes().
Если класс события, связанный с этой фабрикой событий, еще не зарегистрирован, вызов этого метода игнорируется.
- Исключения:
-
SecurityException- если менеджер безопасности существует и у вызывающего объекта нетFlightRecorderPermission("registerEvent") - См. также:
© 1993, 2023, 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://docs.oracle.com/en/java/javase/21/docs/api/jdk.jfr/jdk/jfr/EventFactory.html