diff --git a/src/java.base/share/classes/java/lang/classfile/ClassFileVersion.java b/src/java.base/share/classes/java/lang/classfile/ClassFileVersion.java index 5a795b9486533..ff4d1fdae28d4 100644 --- a/src/java.base/share/classes/java/lang/classfile/ClassFileVersion.java +++ b/src/java.base/share/classes/java/lang/classfile/ClassFileVersion.java @@ -25,6 +25,7 @@ package java.lang.classfile; import java.lang.reflect.ClassFileFormatVersion; +import java.util.Optional; import jdk.internal.classfile.impl.ClassFileVersionImpl; @@ -76,6 +77,11 @@ public sealed interface ClassFileVersion */ int minorVersion(); + /** + * {@return a {@link ClassFileFormatVersion} element}. + */ + Optional formatVersion(); + /** * {@return a {@link ClassFileVersion} element} * @param majorVersion the major version diff --git a/src/java.base/share/classes/jdk/internal/classfile/impl/ClassFileVersionImpl.java b/src/java.base/share/classes/jdk/internal/classfile/impl/ClassFileVersionImpl.java index ba2605296cb69..0f9c9084182d2 100644 --- a/src/java.base/share/classes/jdk/internal/classfile/impl/ClassFileVersionImpl.java +++ b/src/java.base/share/classes/jdk/internal/classfile/impl/ClassFileVersionImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package jdk.internal.classfile.impl; import java.lang.classfile.ClassFileVersion; +import java.lang.reflect.ClassFileFormatVersion; +import java.util.Optional; public final class ClassFileVersionImpl extends AbstractElement @@ -46,6 +48,15 @@ public int minorVersion() { return minorVersion; } + @Override + public Optional formatVersion() { + try { + return Optional.of(ClassFileFormatVersion.fromMajor(majorVersion)); + } catch (IllegalArgumentException e) { + return Optional.empty(); + } + } + @Override public void writeTo(DirectClassBuilder builder) { builder.setVersion(majorVersion, minorVersion);