フィールド・レイアウトがわかっている場合は、コンパイル時にイベントを定義することを強くお薦めします。したがって、Java Virtual Machine (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 EventFactorycreate(List<AnnotationElement> annotationElements, List<ValueDescriptor> fields)EventFactoryオブジェクトを作成します。このイベント・ファクトリに関連付けられているイベント・タイプを返します。newEvent()イベントをインスタンス化することで、データを移入してFlight Recorderシステムに書き込むことができます。voidregister()登録されていないイベントを登録します。voidこのイベント・ファクトリに関連付けられているイベントを登録解除します。
- 
メソッドの詳細- 
createpublic static EventFactory create(List<AnnotationElement> annotationElements, List<ValueDescriptor> fields)EventFactoryオブジェクトを作成します。値記述子の順序は、イベント値の設定時に使用する索引を指定します。 - パラメータ:
- annotationElements- イベントの注釈を説明する注釈要素のリスト(- nullではない)
- fields- イベントのフィールドを説明する記述子のリスト(- nullではありません)
- 戻り値:
- nullではなくイベント・ファクトリ
- 例外:
- IllegalArgumentException- 入力が有効でない場合。 たとえば、フィールドのタイプまたは名前がJava言語で無効な場合や、注釈要素が見つからないタイプを参照している場合、入力が有効でない可能性があります。
- SecurityException- セキュリティ・マネージャが存在し、呼び出し元に- FlightRecorderPermission("registerEvent")がない場合
- 関連項目:
- Event.set(int, Object)
 
- 
newEventpublic Event newEvent()イベントをインスタンス化することで、データを移入してFlight Recorderシステムに書き込むことができます。Event.set(int, Object)メソッドを使用して値を設定します。- 戻り値:
- nullではなくイベント・インスタンス
 
- 
getEventTypepublic EventType getEventType()このイベント・ファクトリに関連付けられているイベント・タイプを返します。- 戻り値:
- このイベント・ファクトリに関連付けられているイベント・タイプ(nullではない)
- 例外:
- IllegalStateException- イベント・ファクトリが- Registered(false)注釈を使用して作成され、このメソッドの呼出し前にイベント・クラスが手動で登録されていない場合
 
- 
registerpublic void register()登録されていないイベントを登録します。デフォルトでは、イベントに Registered注釈がない場合、イベント・ファクトリが作成されると、このイベント・ファクトリに関連付けられたイベント・クラスが登録されます。登録済イベント・クラスはFlight Recorderにデータを書き込むことができ、 FlightRecorder.getEventTypes()を呼び出してイベント・メタデータを取得できます。このイベント・ファクトリに関連付けられているイベント・クラスがすでに登録されている場合、このメソッドの呼出しは無視されます。 - 例外:
- SecurityException- セキュリティ・マネージャが存在し、呼び出し元に- FlightRecorderPermission("registerEvent")がない場合
- 関連項目:
- Registered,- FlightRecorder.register(Class)
 
- 
unregisterpublic void unregister()このイベント・ファクトリに関連付けられているイベントを登録解除します。未登録イベント・クラスはFlight Recorderにデータを書き込むことはできず、 FlightRecorder.getEventTypes()を起動してもイベント・メタデータを取得できません。このイベント・ファクトリに関連付けられているイベント・クラスがまだ登録されていない場合、このメソッドの呼出しは無視されます。 - 例外:
- SecurityException- セキュリティ・マネージャが存在し、呼び出し元に- FlightRecorderPermission("registerEvent")がない場合
- 関連項目:
- Registered,- FlightRecorder.unregister(Class)
 
 
-