Класс 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 либо элемент аннотации ссылается на тип, который не удается найти. - См. также:
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().
Если класс события, связанный с этой фабрикой событий, уже зарегистрирован, вызов этого метода игнорируется.
- См. также:
unregister
public void unregister()
Незарегистрированный класс события не может записывать данные в Flight Recorder, а метаданные события нельзя получить, вызвав FlightRecorder.getEventTypes().
Если класс события, связанный с этой фабрикой событий, еще не зарегистрирован, вызов этого метода игнорируется.
- См. также:
© 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://docs.oracle.com/en/java/javase/25/docs/api/jdk.jfr/jdk/jfr/EventFactory.html