Package net.bytebuddy

Class ClassFileVersion

  • All Implemented Interfaces:
    java.lang.Comparable<ClassFileVersion>

    public class ClassFileVersion
    extends java.lang.Object
    implements java.lang.Comparable<ClassFileVersion>
    A wrapper object for representing a validated class file version in the format that is specified by the JVMS.
    • Field Detail

      • BASE_VERSION

        protected static final int BASE_VERSION
        Returns the minimal version number that is legal.
        See Also:
        Constant Field Values
      • 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 (preliminary).
    • Constructor Detail

      • ClassFileVersion

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

      • ofMinorMajor

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

        public static ClassFileVersion ofJavaVersionString​(java.lang.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.
      • 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​(java.lang.Class<?> type)
                                   throws java.io.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:
        java.io.IOException - If an error occurs while reading the class file.
      • of

        public static ClassFileVersion of​(java.lang.Class<?> type,
                                          ClassFileLocator classFileLocator)
                                   throws java.io.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:
        java.io.IOException - If an error occurs while reading the class file.
      • of

        public static ClassFileVersion of​(TypeDescription typeDescription,
                                          ClassFileLocator classFileLocator)
                                   throws java.io.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:
        java.io.IOException - If an error occurs while reading the class file.
      • 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 int getMajorVersion()
        Returns the major version this instance represents.
        Returns:
        The major version this instance represents.
      • getMinorVersion

        public int 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.