ClassFileVersion (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.lang.classfile, interface: ClassFileVersion
Keywords: java.lang.classfile.ClassFileVersion interface

# Interface ClassFileVersion

All Superinterfaces:
  `ClassElement, ClassFileElement`

public sealed interface ClassFileVersion extends ClassElement
Models the minor and major version numbers of a `class` file (JVMS 4.1). The `class` file version appears exactly once in each class, and is set to an unspecified default value if not explicitly provided.

The major versions of `class` file format begins at 45 for Java Platform version 1.0.2, and is continuous up to `ClassFile.latestMajorVersion()`. In general, each major version defines a new supported `class` file format, modeled by `ClassFileFormatVersion`, and supports all previous formats.

For major versions up to 55 for Java SE Platform 11, the minor version of any value is supported. For major versions 56 for Java SE Platform version 12 and above, the minor version must be `0` or 65535. The minor version `0` is always supported, and represents the format modeled by `ClassFileFormatVersion`. The minor version `65535` indicates the `class` file uses preview features of the Java SE Platform release represented by the major version. A Java Virtual Machine can only load such a `class` file if it has the same Java SE Platform version and the JVM has preview features enabled.

See Java Virtual Machine Specification:
  4.1 The `ClassFile` Structure
Since:
  24
See Also:
  - `ClassModel.majorVersion()`
  - `ClassModel.minorVersion()`
  - `ClassFileFormatVersion`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `majorVersion()`
  Returns the major version.
  `int`
  `minorVersion()`
  Returns the minor version.
  `static ClassFileVersion`
  `of(int majorVersion, int minorVersion)`
  Returns a `ClassFileVersion` element.

- ## Method Details

  - ### majorVersion

    int majorVersion()
    Returns the major version. It is a `u2` value.
    API Note:
      Constants in `ClassFile` named `Java_#_VERSION`, where # is a release number, such as `ClassFile.JAVA_21_VERSION`, describe the class major versions of the Java Platform SE.
    Returns:
      the major version

  - ### minorVersion

    int minorVersion()
    Returns the minor version. It is a `u2` value.
    Returns:
      the minor version

  - ### of

    static ClassFileVersion of(int majorVersion, int minorVersion)
    Returns a `ClassFileVersion` element. The minor version number may be `-1` to represent 65535.
    Parameters:
      `majorVersion` - the major version
      `minorVersion` - the minor version
    Returns:
      a `ClassFileVersion` element
    Throws:
      `IllegalArgumentException` - if the major version or the minor version is not `u2`; the minor version may be `-1`