Package net.bytebuddy

Class ClassFileVersion

java.lang.Object
net.bytebuddy.ClassFileVersion
All Implemented Interfaces:
Serializable, Comparable<ClassFileVersion>

@Enhance public class ClassFileVersion extends Object implements Comparable<ClassFileVersion>, Serializable
A wrapper object for representing a validated class file version in the format that is specified by the JVMS.
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      The class's serial version UID.
      See Also:
    • BASE_VERSION

      protected static final int BASE_VERSION
      Returns the minimal version number that is legal.
      See Also:
    • JAVA_V1

      public static final ClassFileVersion JAVA_V1
      The class file version of Java 1.
    • JAVA_V2

      public static final ClassFileVersion JAVA_V2
      The class file version of Java 2.
    • JAVA_V3

      public static final ClassFileVersion JAVA_V3
      The class file version of Java 3.
    • JAVA_V4

      public static final ClassFileVersion JAVA_V4
      The class file version of Java 4.
    • JAVA_V5

      public static final ClassFileVersion JAVA_V5
      The class file version of Java 5.
    • JAVA_V6

      public static final ClassFileVersion JAVA_V6
      The class file version of Java 6.
    • JAVA_V7

      public static final ClassFileVersion JAVA_V7
      The class file version of Java 7.
    • JAVA_V8

      public static final ClassFileVersion JAVA_V8
      The class file version of Java 8.
    • JAVA_V9

      public static final ClassFileVersion JAVA_V9
      The class file version of Java 9.
    • JAVA_V10

      public static final ClassFileVersion JAVA_V10
      The class file version of Java 10.
    • JAVA_V11

      public static final ClassFileVersion JAVA_V11
      The class file version of Java 11.
    • JAVA_V12

      public static final ClassFileVersion JAVA_V12
      The class file version of Java 12.
    • JAVA_V13

      public static final ClassFileVersion JAVA_V13
      The class file version of Java 13.
    • JAVA_V14

      public static final ClassFileVersion JAVA_V14
      The class file version of Java 14.
    • JAVA_V15

      public static final ClassFileVersion JAVA_V15
      The class file version of Java 15.
    • JAVA_V16

      public static final ClassFileVersion JAVA_V16
      The class file version of Java 16.
    • JAVA_V17

      public static final ClassFileVersion JAVA_V17
      The class file version of Java 17.
    • JAVA_V18

      public static final ClassFileVersion JAVA_V18
      The class file version of Java 18.
    • JAVA_V19

      public static final ClassFileVersion JAVA_V19
      The class file version of Java 19.
    • VERSION_LOCATOR

      private static final ClassFileVersion.VersionLocator VERSION_LOCATOR
      A version locator for the executing JVM.
    • versionNumber

      private final int versionNumber
      The version number that is represented by this class file version instance.
  • Constructor Details

    • ClassFileVersion

      protected ClassFileVersion(int versionNumber)
      Creates a wrapper for a given minor-major release of the Java class file format.
      Parameters:
      versionNumber - The minor-major release number.
  • Method Details

    • doPrivileged

      @Enhance private static <T> T doPrivileged(PrivilegedAction<T> action)
      A proxy for java.security.AccessController#doPrivileged that is activated if available.
      Type Parameters:
      T - The type of the action's resolved value.
      Parameters:
      action - The action to execute from a privileged context.
      Returns:
      The action's resolved value.
    • ofMinorMajor

      public static ClassFileVersion ofMinorMajor(int versionNumber)
      Creates a wrapper for a given minor-major release of the Java class file format.
      Parameters:
      versionNumber - The minor-major release number.
      Returns:
      A representation of the version number.
    • ofJavaVersionString

      public static ClassFileVersion ofJavaVersionString(String javaVersionString)
      Returns the Java class file by its representation by a version string in accordance to the formats known to javac.
      Parameters:
      javaVersionString - The Java version string.
      Returns:
      The appropriate class file version.
    • ofJavaVersion

      public static ClassFileVersion ofJavaVersion(int javaVersion)
      Creates a class file version for a given major release of Java. Currently, all versions reaching from Java 1 to Java 9 are supported.
      Parameters:
      javaVersion - The Java version.
      Returns:
      A wrapper for the given Java class file version.
    • latest

      public static ClassFileVersion latest()
      Returns the latest officially supported Java version when experimental support is not enabled.
      Returns:
      The latest officially supported Java version.
    • ofThisVm

      public static ClassFileVersion ofThisVm()
      Finds the highest class file version that is compatible to the current JVM version. Prior to Java 9, this is achieved by parsing the java.version property which is provided by System.getProperty(String). If the system property is not available, an IllegalStateException is thrown.
      Returns:
      The currently running Java process's class file version.
    • ofThisVm

      public static ClassFileVersion ofThisVm(ClassFileVersion fallback)
      Finds the highest class file version that is compatible to the current JVM version. Prior to Java 9, this is achieved by parsing the java.version property which is provided by System.getProperty(String). If the system property is not available, the fallback version is returned.
      Parameters:
      fallback - The version to fallback to if locating a class file version is not possible.
      Returns:
      The currently running Java process's class file version or the fallback if locating this version is impossible.
    • of

      public static ClassFileVersion of(Class<?> type) throws IOException
      Extracts a class' class version. The class' byte code is located by querying the ClassLoader of the class.
      Parameters:
      type - The type for which to locate a class file version.
      Returns:
      The type's class file version.
      Throws:
      IOException - If an error occurs while reading the class file.
    • of

      public static ClassFileVersion of(Class<?> type, ClassFileLocator classFileLocator) throws IOException
      Extracts a class' class version.
      Parameters:
      type - The type for which to locate a class file version.
      classFileLocator - The class file locator to query for a class file.
      Returns:
      The type's class file version.
      Throws:
      IOException - If an error occurs while reading the class file.
    • of

      public static ClassFileVersion of(TypeDescription typeDescription, ClassFileLocator classFileLocator) throws IOException
      Extracts a class' class version.
      Parameters:
      typeDescription - The type for which to locate a class file version.
      classFileLocator - The class file locator to query for a class file.
      Returns:
      The type's class file version.
      Throws:
      IOException - If an error occurs while reading the class file.
    • ofClassFile

      public static ClassFileVersion ofClassFile(byte[] binaryRepresentation)
      Extracts a class' class version from a class file.
      Parameters:
      binaryRepresentation - The class file's binary representation.
      Returns:
      The supplied class file's class file version.
    • getMinorMajorVersion

      public int getMinorMajorVersion()
      Returns the minor-major release number of this class file version.
      Returns:
      The minor-major release number of this class file version.
    • getMajorVersion

      public short getMajorVersion()
      Returns the major version this instance represents.
      Returns:
      The major version this instance represents.
    • getMinorVersion

      public short getMinorVersion()
      Returns the minor version this instance represents.
      Returns:
      The minor version this instance represents.
    • getJavaVersion

      public int getJavaVersion()
      Returns the Java runtime version number of this class file version.
      Returns:
      The Java runtime version.
    • isAtLeast

      public boolean isAtLeast(ClassFileVersion classFileVersion)
      Checks if this class file version is at least as new as the provided version.
      Parameters:
      classFileVersion - The version to check against.
      Returns:
      true if this version is at least of the given version.
    • isGreaterThan

      public boolean isGreaterThan(ClassFileVersion classFileVersion)
      Checks if this class file version is newer than the provided version.
      Parameters:
      classFileVersion - The version to check against.
      Returns:
      true if this version is newer than the provided version.
    • isAtMost

      public boolean isAtMost(ClassFileVersion classFileVersion)
      Checks if this class file version is at most as new as the provided version.
      Parameters:
      classFileVersion - The version to check against.
      Returns:
      true if this version is as most as new as the provided version.
    • isLessThan

      public boolean isLessThan(ClassFileVersion classFileVersion)
      Checks if this class file version is older than the provided version.
      Parameters:
      classFileVersion - The version to check against.
      Returns:
      true if this version is older than the provided version.
    • asPreviewVersion

      public ClassFileVersion asPreviewVersion()
      Returns this class file version indicating a class using preview features.
      Returns:
      This class file version but indicating the use of preview features.
    • isPreviewVersion

      public boolean isPreviewVersion()
      Returns true if this class file version indicates the use of preview features.
      Returns:
      true if this class file version indicates the use of preview features.
    • compareTo

      public int compareTo(ClassFileVersion other)
      Specified by:
      compareTo in interface Comparable<ClassFileVersion>
    • toString

      public String toString()
      Overrides:
      toString in class Object