Spec-Zone.ru › OpenJDK 27

Класс EventFactory

java.lang.Object
jdk.jfr.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(List<AnnotationElement> annotationElements, List<ValueDescriptor> fields)
Создает объект EventFactory.
EventType getEventType()
Возвращает тип события, связанный с этой фабрикой событий.
Event newEvent()
Создает экземпляр события, который можно заполнить данными и записать в систему Flight Recorder.
void register()
Регистрирует незарегистрированное событие.
void unregister()
Отменяет регистрацию события, связанного с этой фабрикой событий.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определенного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определенного времени.

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

create

public static EventFactory create(List<AnnotationElement> annotationElements, List<ValueDescriptor> fields)
Создает объект EventFactory.

Порядок дескрипторов значений определяет индекс, который следует использовать при задании значений события.

Параметры:
annotationElements — список элементов аннотаций, описывающий аннотации события, не null
fields — список дескрипторов, описывающий поля события, не null
Возвращает:
фабрику событий, не null
Исключения:
IllegalArgumentException — если входные данные недопустимы. Например, входные данные могут быть недопустимы, если тип или имя поля недопустимы в языке Java либо элемент аннотации ссылается на тип, который не может быть найден.
См. также:
  • Event.set(int, Object)

newEvent

public Event newEvent()
Создает экземпляр события, который можно заполнить данными и записать в систему Flight Recorder.

Для задания значения используйте метод Event.set(int, Object).

Возвращает:
экземпляр события, не null

getEventType

public EventType getEventType()
Возвращает тип события, связанный с этой фабрикой событий.
Возвращает:
тип события, связанный с этой фабрикой событий, не null
Исключения:
IllegalStateException — если фабрика событий создана с аннотацией Registered(false), а класс события не зарегистрирован вручную до вызова этого метода

register

public void register()
Регистрирует незарегистрированное событие.

По умолчанию класс события, связанный с этой фабрикой событий, регистрируется при создании фабрики, если событие не имеет аннотации Registered.

Зарегистрированный класс события может записывать данные в Flight Recorder, а метаданные события можно получить вызовом FlightRecorder.getEventTypes().

Если класс события, связанный с этой фабрикой событий, уже зарегистрирован, вызов этого метода игнорируется.

См. также:
  • Registered
  • FlightRecorder.register(Class)

unregister

public void unregister()
Отменяет регистрацию события, связанного с этой фабрикой событий.

Незарегистрированный класс события не может записывать данные в Flight Recorder, а метаданные события нельзя получить вызовом FlightRecorder.getEventTypes().

Если класс события, связанный с этой фабрикой событий, еще не зарегистрирован, вызов этого метода игнорируется.

См. также:
  • Registered
  • FlightRecorder.unregister(Class)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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