Module java.base
Package java.lang

Class Runtime.Version

java.lang.Object
java.lang.Runtime.Version
所有已实现的接口:
Comparable<Runtime.Version>
封装类:
Runtime

public static final class Runtime.Version extends Object implements Comparable<Runtime.Version>
代表Java SE平台实现的版本字符串。版本字符串由一个版本号组成,可选择地后跟预发布和构建信息。

版本号

版本号$VNUM,是由句点字符(U+002E)分隔的元素的非空序列。一个元素要么是零,要么是没有前导零的无符号整数数字。版本号中的最后一个元素不能为零。当一个元素被递增时,所有后续元素都被移除。格式如下:

 [1-9][0-9]*((\.0)*\.[1-9][0-9]*)*
 

序列可以是任意长度,但前四个元素被分配特定含义,如下所示:

 $FEATURE.$INTERIM.$UPDATE.$PATCH
 
  • $FEATURE — 特性发布计数器,每次特性发布都会递增,无论发布内容如何。特性可以在特性发布中添加;它们也可以被移除,如果提前至少提前一个特性发布通知。在合理的情况下可以进行不兼容的更改。

  • $INTERIM — 临时发布计数器,递增用于包含兼容的错误修复和增强功能但不包含不兼容更改、不移除特性和不更改标准API的非特性发布。

  • $UPDATE — 更新发布计数器,递增用于修复安全问题、回归和新功能中的错误的兼容更新发布。

  • $PATCH — 紧急补丁发布计数器,仅在需要生成紧急发布以修复关键问题时递增。

版本号的第五个及以后的元素可供平台实现者自由使用,以标识特定于实现者的补丁发布。

版本号永远不会有尾随的零元素。如果一个元素及其后续所有元素在逻辑上的值都为零,则所有这些元素都将被省略。

版本号中的数字序列将以数值、逐点方式与另一个这样的序列进行比较;例如,10.0.4小于10.1.2。如果一个序列比另一个短,则较短序列的缺失元素被视为小于较长序列的相应元素;例如,10.0.2小于10.0.2.1

版本字符串

版本字符串$VSTR,是一个版本号$VNUM,如上所述,可选择地后跟预发布和构建信息,格式如下:

     $VNUM(-$PRE)?\+$BUILD(-$OPT)?
     $VNUM-$PRE(-$OPT)?
     $VNUM(\+-$OPT)?
 

其中:

  • $PRE,匹配([a-zA-Z0-9]+) — 预发布标识符。通常为ea,用于潜在不稳定的正在积极开发中的早期访问版本,或internal,用于内部开发人员构建。

  • $BUILD,匹配 (0|[1-9][0-9]*) — 构建号,每次推广构建都会递增。当$VNUM的任何部分被递增时,$BUILD将重置为1

  • $OPT,匹配([-a-zA-Z0-9.]+) — 额外的构建信息,如果需要的话。在internal构建的情况下,这通常包含构建的日期和时间。

版本字符串10-ea匹配$VNUM = "10"$PRE = "ea"。版本字符串10+-ea匹配$VNUM = "10"$OPT = "ea"

在比较两个版本字符串时,如果存在$OPT的值,根据所选择的比较方法,可能会或可能不会重要。应一致使用比较方法compareTo()compareToIgnoreOptional(),与相应的方法equals()equalsIgnoreOptional()

一个短版本字符串$SVSTR,通常在较不正式的上下文中有用,是一个版本号,可选择地后跟预发布标识符:

     $VNUM(-$PRE)?
 

这是一个基于值的类;程序员应该将相等的实例视为可互换的,并且不应将实例用于同步,否则可能会发生不可预测的行为。例如,在将来的版本中,同步可能会失败。

自Java 9起:
9
  • Method Details

    • parse

      public static Runtime.Version parse(String s)
      将给定的字符串解析为包含版本号后跟预发布和构建信息的有效版本字符串
      参数:
      s - 要解释为版本的字符串
      返回:
      给定字符串的版本
      抛出:
      IllegalArgumentException - 如果给定的字符串无法解释为有效版本
      NullPointerException - 如果给定的字符串为null
      NumberFormatException - 如果版本号或构建号的任何元素无法表示为Integer
    • feature

      public int feature()
      返回版本号的特性元素的值。
      返回:
      特性元素的值
      自Java 10起:
      10
    • interim

      public int interim()
      返回版本号的临时元素的值,如果不存在则返回零。
      返回:
      临时元素的值,或零
      自Java 10起:
      10
    • update

      public int update()
      返回版本号的更新元素的值,如果不存在则返回零。
      返回:
      更新元素的值,或零
      自Java 10起:
      10
    • patch

      public int patch()
      返回版本号的补丁元素的值,如果不存在则返回零。
      返回:
      补丁元素的值,或零
      自Java 10起:
      10
    • major

      @Deprecated(since="10") public int major()
      Deprecated.
      As of Java SE 10, the first element of a version number is not the major-release number but the feature-release counter, incremented for every time-based release. Use the feature() method in preference to this method. For compatibility, this method returns the value of the feature element.
      返回版本号的主要元素的值。
      返回:
      特性元素的值
    • minor

      @Deprecated(since="10") public int minor()
      Deprecated.
      As of Java SE 10, the second element of a version number is not the minor-release number but the interim-release counter, incremented for every interim release. Use the interim() method in preference to this method. For compatibility, this method returns the value of the interim element, or zero if it is absent.
      返回版本号的次要元素的值,如果不存在则返回零。
      返回:
      临时元素的值,或零
    • security

      @Deprecated(since="10") public int security()
      Deprecated.
      As of Java SE 10, the third element of a version number is not the security level but the update-release counter, incremented for every update release. Use the update() method in preference to this method. For compatibility, this method returns the value of the update element, or zero if it is absent.
      返回版本号的安全元素的值,如果不存在则返回零。
      返回:
      更新元素的值,或零
    • version

      public List<Integer> version()
      返回List,其中包含版本号中表示的整数的不可修改列表。该List始终包含至少一个元素,对应于特性版本号
      返回:
      表示版本号中的整数的不可修改列表
    • pre

      public Optional<String> pre()
      返回可选的预发布信息。
      返回:
      可选的预发布信息作为字符串
    • build

      public Optional<Integer> build()
      返回构建号
      返回:
      可选的构建编号。
    • optional

      public Optional<String> optional()
      返回可选的额外标识构建信息。
      返回:
      作为字符串的额外构建信息
    • compareTo

      public int compareTo(Runtime.Version obj)
      将此版本与另一个版本进行比较。

      按以下优先顺序比较版本中的每个组件:版本号码、预发布标识符、构建号码、可选的构建信息。

      比较从检查版本号码序列开始。如果一个序列比另一个短,则较短序列的缺失元素被视为小于较长序列的相应元素。

      具有预发布标识符的版本始终被视为小于没有预发布标识符的版本。当预发布标识符仅由数字组成时,它们按数字进行比较,否则按字典顺序进行比较。数字标识符被视为小于非数字标识符。

      没有构建号的版本始终小于具有构建号的版本;否则构建号按数字进行比较。

      可选的构建信息按字典顺序进行比较。在此比较期间,具有可选构建信息的版本被视为大于没有可选构建信息的版本。

      指定者:
      compareTo 在接口 Comparable<Runtime.Version>
      参数:
      obj - 要比较的对象
      返回:
      如果此Version小于、等于或大于给定的Version,则为负整数、零或正整数
      抛出:
      NullPointerException - 如果给定的对象为null
    • compareToIgnoreOptional

      public int compareToIgnoreOptional(Runtime.Version obj)
      将此版本与另一个版本进行比较,忽略可选的构建信息。

      通过检查版本字符串来比较两个版本,如compareTo(Version)所述,唯一的例外是始终忽略可选的构建信息。

      此方法提供了与equalsIgnoreOptional()一致的排序。

      参数:
      obj - 要比较的对象
      返回:
      如果此Version小于、等于或大于给定的Version,则为负整数、零或正整数
      抛出:
      NullPointerException - 如果给定的对象为null
    • toString

      public String toString()
      返回此版本的字符串表示形式。
      覆盖:
      toString 在类 Object
      返回:
      版本字符串
    • equals

      public boolean equals(Object obj)
      确定此Version是否等于另一个对象。

      仅当两个Version表示相同的版本字符串时,它们才相等。

      覆盖:
      equals 在类 Object
      参数:
      obj - 要将此Version与之比较的对象
      返回:
      如果给定对象是与此Version相同且相等的Version,则为true
      参见:
    • equalsIgnoreOptional

      public boolean equalsIgnoreOptional(Object obj)
      确定此Version是否等于另一个版本,忽略可选的构建信息。

      仅当两个Version表示相同的版本字符串,忽略可选的构建信息时,它们才相等。

      参数:
      obj - 要将此Version与之比较的对象
      返回:
      如果给定对象是与此Version相同且相等的Version,忽略可选的构建信息,则为true
    • hashCode

      public int hashCode()
      返回此版本的哈希码。
      覆盖:
      hashCode 在类 Object
      返回:
      此版本的哈希码
      参见: