# Enum Class ClassFileFormatVersion

java.lang.Object
java.lang.Enum<ClassFileFormatVersion>
java.lang.reflect.ClassFileFormatVersion

All Implemented Interfaces:
  `Serializable`, `Comparable<ClassFileFormatVersion>`, `Constable`

public enum ClassFileFormatVersion extends Enum<ClassFileFormatVersion>
Class file format versions of the Java virtual machine. See the appropriate edition of The Java Virtual Machine Specification for information about a particular class file format version.

Note that additional class file format version constants will be added to model future releases of the Java Virtual Machine Specification.

API Note:
  The complete version used in a class file includes a major version and a minor version; this enum only models the major version. A Java virtual machine implementation is required to support a range of major versions; see the corresponding edition of the The Java Virtual Machine Specification for details.
Since:
  20
See Also:
  - System property `java.class.version`
  - `SourceVersion`

- ## Nested Class Summary

  ### Nested classes/interfaces declared in class java.lang.Enum

  `Enum.EnumDesc<E extends Enum<E>>`

- ## Enum Constant Summary

  Enum Constants
  Enum Constant
  Description
  `RELEASE_0`
  The original version.
  `RELEASE_1`
  The version recognized by the Java Platform 1.1.
  `RELEASE_10`
  The version introduced by the Java Platform, Standard Edition 10.
  `RELEASE_11`
  The version introduced by the Java Platform, Standard Edition 11.
  `RELEASE_12`
  The version introduced by the Java Platform, Standard Edition 12.
  `RELEASE_13`
  The version introduced by the Java Platform, Standard Edition 13.
  `RELEASE_14`
  The version introduced by the Java Platform, Standard Edition 14.
  `RELEASE_15`
  The version introduced by the Java Platform, Standard Edition 15.
  `RELEASE_16`
  The version introduced by the Java Platform, Standard Edition 16.
  `RELEASE_17`
  The version introduced by the Java Platform, Standard Edition 17.
  `RELEASE_18`
  The version introduced by the Java Platform, Standard Edition 18.
  `RELEASE_19`
  The version introduced by the Java Platform, Standard Edition 19.
  `RELEASE_2`
  The version introduced by the Java 2 Platform, Standard Edition, v 1.2.
  `RELEASE_20`
  The version introduced by the Java Platform, Standard Edition 20.
  `RELEASE_21`
  The version introduced by the Java Platform, Standard Edition 21.
  `RELEASE_22`
  The version introduced by the Java Platform, Standard Edition 22.
  `RELEASE_23`
  The version introduced by the Java Platform, Standard Edition 23.
  `RELEASE_24`
  The version introduced by the Java Platform, Standard Edition 24.
  `RELEASE_3`
  The version introduced by the Java 2 Platform, Standard Edition, v 1.3.
  `RELEASE_4`
  The version introduced by the Java 2 Platform, Standard Edition, v 1.4.
  `RELEASE_5`
  The version introduced by the Java 2 Platform, Standard Edition 5.0.
  `RELEASE_6`
  The version introduced by the Java Platform, Standard Edition 6.
  `RELEASE_7`
  The version introduced by the Java Platform, Standard Edition 7.
  `RELEASE_8`
  The version introduced by the Java Platform, Standard Edition 8.
  `RELEASE_9`
  The version introduced by the Java Platform, Standard Edition 9.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ClassFileFormatVersion`
  `fromMajor(int major)`
  Returns the latest class file format version whose major class file version matches the argument.
  `static ClassFileFormatVersion`
  `latest()`
  Returns the latest class file format version.
  `int`
  `major()`
  Returns the major class file version as an integer.
  `Runtime.Version`
  `runtimeVersion()`
  Returns the least runtime version that supports this class file format version; otherwise `null`.
  `static ClassFileFormatVersion`
  `valueOf(Runtime.Version rv)`
  Returns the latest class file format version that is usable under the runtime version argument.
  `static ClassFileFormatVersion`
  `valueOf(String name)`
  Returns the enum constant of this class with the specified name.
  `static ClassFileFormatVersion[]`
  `values()`
  Returns an array containing the constants of this enum class, in the order they are declared.

  ### Methods declared in class java.lang.Enum

  `clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

  ### Methods declared in class java.lang.Object

  `getClass, notify, notifyAll, wait, wait, wait`

- ## Enum Constant Details

  - ### RELEASE_0

    public static final ClassFileFormatVersion RELEASE_0
    The original version. The format described in The Java Virtual Specification, First Edition.

  - ### RELEASE_1

    public static final ClassFileFormatVersion RELEASE_1
    The version recognized by the Java Platform 1.1.
    API Note:
      While `RELEASE_0` and `RELEASE_1` have the same major version, several additional attributes were defined for `RELEASE_1` (JVMS 4.7).

  - ### RELEASE_2

    public static final ClassFileFormatVersion RELEASE_2
    The version introduced by the Java 2 Platform, Standard Edition, v 1.2. The format described in The Java Virtual Machine Specification, Second Edition, which includes the `ACC_STRICT` access flag.

  - ### RELEASE_3

    public static final ClassFileFormatVersion RELEASE_3
    The version introduced by the Java 2 Platform, Standard Edition, v 1.3.

  - ### RELEASE_4

    public static final ClassFileFormatVersion RELEASE_4
    The version introduced by the Java 2 Platform, Standard Edition, v 1.4.

  - ### RELEASE_5

    public static final ClassFileFormatVersion RELEASE_5
    The version introduced by the Java 2 Platform, Standard Edition 5.0.
    See Also:
      - The Java Virtual Machine Specification, Second Edition updated for Java SE 5.0
      - JSR 14: Add Generic Types To The Java™ Programming Language
      - JSR 175: A Metadata Facility for the Java™ Programming Language

  - ### RELEASE_6

    public static final ClassFileFormatVersion RELEASE_6
    The version introduced by the Java Platform, Standard Edition 6.
    See Also:
      - The Java Virtual Machine Specification, Java SE, Second Edition updated for Java SE 6

  - ### RELEASE_7

    public static final ClassFileFormatVersion RELEASE_7
    The version introduced by the Java Platform, Standard Edition 7.
    See Also:
      - The Java Virtual Machine Specification, Java SE 7 Edition

  - ### RELEASE_8

    public static final ClassFileFormatVersion RELEASE_8
    The version introduced by the Java Platform, Standard Edition 8.
    See Also:
      - The Java Virtual Machine Specification, Java SE 8 Edition
      - JSR 335: Lambda Expressions for the Java™ Programming Language

  - ### RELEASE_9

    public static final ClassFileFormatVersion RELEASE_9
    The version introduced by the Java Platform, Standard Edition 9.
    See Also:
      - The Java Virtual Machine Specification, Java SE 9 Edition
      - JSR 376: Java™ Platform Module System

  - ### RELEASE_10

    public static final ClassFileFormatVersion RELEASE_10
    The version introduced by the Java Platform, Standard Edition 10.
    See Also:
      - The Java Virtual Machine Specification, Java SE 10 Edition

  - ### RELEASE_11

    public static final ClassFileFormatVersion RELEASE_11
    The version introduced by the Java Platform, Standard Edition 11.
    See Also:
      - The Java Virtual Machine Specification, Java SE 11 Edition
      - JEP 181: Nest-Based Access Control

  - ### RELEASE_12

    public static final ClassFileFormatVersion RELEASE_12
    The version introduced by the Java Platform, Standard Edition 12.
    See Also:
      - The Java Virtual Machine Specification, Java SE 12 Edition

  - ### RELEASE_13

    public static final ClassFileFormatVersion RELEASE_13
    The version introduced by the Java Platform, Standard Edition 13.
    See Also:
      - The Java Virtual Machine Specification, Java SE 13 Edition

  - ### RELEASE_14

    public static final ClassFileFormatVersion RELEASE_14
    The version introduced by the Java Platform, Standard Edition 14.
    See Also:
      - The Java Virtual Machine Specification, Java SE 14 Edition

  - ### RELEASE_15

    public static final ClassFileFormatVersion RELEASE_15
    The version introduced by the Java Platform, Standard Edition 15.
    See Also:
      - The Java Virtual Machine Specification, Java SE 15 Edition
      - JEP 371: Hidden Classes

  - ### RELEASE_16

    public static final ClassFileFormatVersion RELEASE_16
    The version introduced by the Java Platform, Standard Edition 16.
    See Also:
      - The Java Virtual Machine Specification, Java SE 16 Edition

  - ### RELEASE_17

    public static final ClassFileFormatVersion RELEASE_17
    The version introduced by the Java Platform, Standard Edition 17. Additions in this release include sealed classes and restoration of always-strict floating-point semantics.
    See Also:
      - The Java Virtual Machine Specification, Java SE 17 Edition
      - JEP 306: Restore Always-Strict Floating-Point Semantics
      - JEP 409: Sealed Classes

  - ### RELEASE_18

    public static final ClassFileFormatVersion RELEASE_18
    The version introduced by the Java Platform, Standard Edition 18.
    See Also:
      - The Java Virtual Machine Specification, Java SE 18 Edition

  - ### RELEASE_19

    public static final ClassFileFormatVersion RELEASE_19
    The version introduced by the Java Platform, Standard Edition 19.
    See Also:
      - The Java Virtual Machine Specification, Java SE 19 Edition

  - ### RELEASE_20

    public static final ClassFileFormatVersion RELEASE_20
    The version introduced by the Java Platform, Standard Edition 20.
    See Also:
      - The Java Virtual Machine Specification, Java SE 20 Edition

  - ### RELEASE_21

    public static final ClassFileFormatVersion RELEASE_21
    The version introduced by the Java Platform, Standard Edition 21.
    Since:
      21
    See Also:
      - The Java Virtual Machine Specification, Java SE 21 Edition

  - ### RELEASE_22

    public static final ClassFileFormatVersion RELEASE_22
    The version introduced by the Java Platform, Standard Edition 22.
    Since:
      22
    See Also:
      - The Java Virtual Machine Specification, Java SE 22 Edition

  - ### RELEASE_23

    public static final ClassFileFormatVersion RELEASE_23
    The version introduced by the Java Platform, Standard Edition 23.
    Since:
      23
    See Also:
      - The Java Virtual Machine Specification, Java SE 23 Edition

  - ### RELEASE_24

    public static final ClassFileFormatVersion RELEASE_24
    The version introduced by the Java Platform, Standard Edition 24.
    Since:
      24
    See Also:
      - The Java Virtual Machine Specification, Java SE 24 Edition

- ## Method Details

  - ### values

    public static ClassFileFormatVersion[] values()
    Returns an array containing the constants of this enum class, in the order they are declared.
    Returns:
      an array containing the constants of this enum class, in the order they are declared

  - ### valueOf

    public static ClassFileFormatVersion valueOf(String name)
    Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
    Parameters:
      `name` - the name of the enum constant to be returned.
    Returns:
      the enum constant with the specified name
    Throws:
      `IllegalArgumentException` - if this enum class has no constant with the specified name
      `NullPointerException` - if the argument is null

  - ### latest

    public static ClassFileFormatVersion latest()
    Returns the latest class file format version.
    Returns:
      the latest class file format version

  - ### major

    public int major()
    Returns the major class file version as an integer.
    Returns:
      the major class file version as an integer
    See Java Virtual Machine Specification:
      4.1 The `ClassFile` Structure

  - ### valueOf

    public static ClassFileFormatVersion valueOf(Runtime.Version rv)
    Returns the latest class file format version that is usable under the runtime version argument. If the runtime version's feature is greater than the feature of the runtime version of the latest class file format version, an `IllegalArgumentException` is thrown.

    Because the class file format versions of the Java platform have so far followed a linear progression, only the feature component of a runtime version is queried to determine the mapping to a class file format version. If that linearity changes in the future, other components of the runtime version may influence the result.

    API Note:
      An expression to convert from a string value, for example `"17"`, to the corresponding class file format version, `RELEASE_17`, is:

          ClassFileFormatVersion.valueOf(Runtime.Version.parse("17"))

    Parameters:
      `rv` - runtime version to map to a class file format version
    Returns:
      the latest class file format version that is usable under the runtime version argument
    Throws:
      `IllegalArgumentException` - if the feature of version argument is greater than the feature of the platform version.

  - ### runtimeVersion

    public Runtime.Version runtimeVersion()
    Returns the least runtime version that supports this class file format version; otherwise `null`. The returned runtime version has a feature large enough to support this class file format version and has no other elements set. Class file format versions greater than or equal to `RELEASE_6` have non-`null` results.
    Returns:
      the least runtime version that supports this class file format version; otherwise `null`

  - ### fromMajor

    public static ClassFileFormatVersion fromMajor(int major)
    Returns the latest class file format version whose major class file version matches the argument.
    Parameters:
      `major` - the major class file version as an integer
    Returns:
      the latest class file format version whose major class file version matches the argument
    Throws:
      `IllegalArgumentException` - if the argument is outside of the range of major class file versions