9 注釈、設定およびフィールドの継承
クラスでイベントを拡張すると、イベントの注釈、設定およびフィールドが継承されます。ただし、クラスは、@java.lang.Inheritedメタ注釈がないプライベート・フィールドや注釈を継承しません。
InheritanceSample.javaの例でこれを示します。これにより、FileAction、FileUploadおよびImageUploadの3つのイベントが定義されます。
               
import jdk.jfr.Category;
import jdk.jfr.Description;
import jdk.jfr.Event;
import jdk.jfr.Label;
import jdk.jfr.Name;
import jdk.jfr.StackTrace;
 
public class InheritanceSample {
    @Category("Files")
    @StackTrace(false)
    abstract static class FileAction extends Event {
        @Label("In Progress")
        boolean inProgress;
    }
    @Name("com.oracle.FileUpload")
    @Description("Uploaded file that might be a text file")
    @Label("File Upload")
    static class FileUpload extends FileAction {
        @Label("Text file")
        private boolean isText;
    }
    @Name("com.oracle.ImageUpload")
    @Label("Image Upload")
    static class ImageUpload extends FileUpload {
    }
    public static void main(String... args) {
        FileUpload fu = new FileUpload();
        fu.inProgress = true;
        fu.isText = false;
        fu.commit();
        ImageUpload iu = new ImageUpload();
        iu.inProgress = false;
        iu.commit();
    }
}次のコマンドを使用して、InheritanceSampleを実行します:
               
java -XX:StartFlightRecording:filename=i.jfr InheritanceSample.java
jfr print --events FileUpload,ImageUpload i.jfr最後のコマンドでは、次のような出力が表示されます:
com.oracle.FileUpload {
  startTime = 15:22:28.794
  isText = false
  inProgress = true
  ...
}
com.oracle.ImageUpload {
  startTime = 15:22:28.822
  inProgress = false
  ...
}FileActionなどの抽象イベント・クラスは登録されていないため、そのメタデータを検査に使用することはできません。
               
@Nameや@Descriptionなど、@java.lang.Inherited注釈がない注釈はクラスに継承されません。
               
フィールドisTextはプライベートであるため、ImageUploadではこのフィールドは継承されません。