# 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 Enum

`Enum.EnumDesc<E>`
Modifier and Type
Class
Description
`static final class`
`Enum.EnumDesc<E extends Enum<E>>`
A nominal descriptor for an `enum` constant.

## 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_25`
The version introduced by the Java Platform, Standard Edition 25.
`RELEASE_26`
The version introduced by the Java Platform, Standard Edition 26.
`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 Enum

`clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`
Modifier and Type
Method
Description
`protected final Object`
`clone()`
Throws CloneNotSupportedException.
`final int`
`compareTo(ClassFileFormatVersion o)`
Compares this enum with the specified object for order.
`final Optional<Enum.EnumDesc<ClassFileFormatVersion>>`
`describeConstable()`
Returns an enum descriptor `EnumDesc` for this instance, if one can be constructed, or an empty `Optional` if one cannot be.
`final boolean`
`equals(Object other)`
Returns true if the specified object is equal to this enum constant.
`protected final void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization has been deprecated for removal.
`final Class<ClassFileFormatVersion>`
`getDeclaringClass()`
Returns the Class object corresponding to this enum constant's enum type.
`final int`
`hashCode()`
Returns a hash code for this enum constant.
`final String`
`name()`
Returns the name of this enum constant, exactly as declared in its enum declaration.
`final int`
`ordinal()`
Returns the ordinal of this enumeration constant (its position in its enum declaration, where the initial constant is assigned an ordinal of zero).
`String`
`toString()`
Returns the name of this enum constant, as contained in the declaration.
`static <T extends Enum<T>>
T`
`valueOf(Class<T> enumClass, String name)`
Returns the enum constant of the specified enum class with the specified name.

### Methods declared in class Object

`getClass, notify, notifyAll, wait, wait, wait`
Modifier and Type
Method
Description
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## 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

### RELEASE_25

public static final ClassFileFormatVersion RELEASE_25
The version introduced by the Java Platform, Standard Edition 25.

Since:
  25
See Also:
  - The Java Virtual Machine Specification, Java SE 25 Edition

### RELEASE_26

public static final ClassFileFormatVersion RELEASE_26
The version introduced by the Java Platform, Standard Edition 26.

Since:
  26
See Also:
  - The Java Virtual Machine Specification, Java SE 26 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