diff --git a/hutool-extra/src/main/java/cn/hutool/extra/management/JavaInfo.java b/hutool-extra/src/main/java/cn/hutool/extra/management/JavaInfo.java index f9a7d596b..a6198e2e1 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/management/JavaInfo.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/management/JavaInfo.java @@ -8,11 +8,12 @@ import java.io.Serializable; /** * 代表Java Implementation的信息。 + * @see ManagementUtil#getJavaInfo() 使用方式 */ public class JavaInfo implements Serializable { private static final long serialVersionUID = 1L; - private final String JAVA_VERSION = SystemUtil.get("java.version", false); + private static final String JAVA_VERSION = SystemUtil.get("java.version", false); private final float JAVA_VERSION_FLOAT = getJavaVersionAsFloat(); private final int JAVA_VERSION_INT = getJavaVersionAsInt(); private final String JAVA_VENDOR = SystemUtil.get("java.vendor", false); @@ -27,10 +28,16 @@ public class JavaInfo implements Serializable { private final boolean IS_JAVA_1_6 = getJavaVersionMatches("1.6"); private final boolean IS_JAVA_1_7 = getJavaVersionMatches("1.7"); private final boolean IS_JAVA_1_8 = getJavaVersionMatches("1.8"); - private final boolean IS_JAVA_9 = getJavaVersionMatches("9"); + private final boolean IS_JAVA_9 = getJavaVersionMatches("9"); private final boolean IS_JAVA_10 = getJavaVersionMatches("10"); private final boolean IS_JAVA_11 = getJavaVersionMatches("11"); private final boolean IS_JAVA_12 = getJavaVersionMatches("12"); + private final boolean IS_JAVA_13 = getJavaVersionMatches("13"); + private final boolean IS_JAVA_14 = getJavaVersionMatches("14"); + private final boolean IS_JAVA_15 = getJavaVersionMatches("15"); + private final boolean IS_JAVA_16 = getJavaVersionMatches("16"); + private final boolean IS_JAVA_17 = getJavaVersionMatches("17"); + private final boolean IS_JAVA_18 = getJavaVersionMatches("18"); /** * 取得当前Java impl.的版本(取自系统属性:{@code java.version})。 @@ -81,6 +88,30 @@ public class JavaInfo implements Serializable { return JAVA_VERSION_INT; } + /** + * 返回1位整型的java版本,(取自系统属性:{@code java.version})如:7、8、11、15、17、18,返回1位,java10及其之后的版本返回值为2位 + * + * @since 6.0.1 + * @author dazer + */ + public final int getVersionIntSimple() { + if (JAVA_VERSION == null) { + return 0; + } + if (JAVA_VERSION.startsWith("1.")) { + return Integer.parseInt(JAVA_VERSION.split("\\.")[1]); + } + return Integer.parseInt(JAVA_VERSION.split("\\.")[0]); + } + /** * 取得当前Java impl.的版本的{@code float}值。 * @@ -291,6 +322,36 @@ public class JavaInfo implements Serializable { return IS_JAVA_12; } + /**是否是当前java的版本。 @since 6.0.1 */ + public final boolean isJava13() { + return IS_JAVA_13; + } + + /**是否是当前java的版本。 @since 6.0.1 */ + public final boolean isJava14() { + return IS_JAVA_14; + } + + /**是否是当前java的版本。 @since 6.0.1 */ + public final boolean isJava15() { + return IS_JAVA_15; + } + + /**是否是当前java的版本。 @since 6.0.1 */ + public final boolean isJava16() { + return IS_JAVA_16; + } + + /**是否是当前java的版本。 @since 6.0.1 */ + public final boolean isJava17() { + return IS_JAVA_17; + } + + /**是否是当前java的版本。 @since 6.0.1 */ + public final boolean isJava18() { + return IS_JAVA_18; + } + /** * 匹配当前Java的版本。 * @@ -358,5 +419,4 @@ public class JavaInfo implements Serializable { return builder.toString(); } - } diff --git a/hutool-extra/src/test/java/cn/hutool/extra/management/JavaInfoTest.java b/hutool-extra/src/test/java/cn/hutool/extra/management/JavaInfoTest.java new file mode 100644 index 000000000..8ba04b7b3 --- /dev/null +++ b/hutool-extra/src/test/java/cn/hutool/extra/management/JavaInfoTest.java @@ -0,0 +1,19 @@ +package cn.hutool.extra.management; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @see JavaInfo + */ +public class JavaInfoTest { + + @Test + public void isJavaVersionAtLeastTest() { + boolean javaVersionAtLeast1 = ManagementUtil.getJavaInfo().isJavaVersionAtLeast(1.8f); + Assert.assertTrue(javaVersionAtLeast1); + + boolean javaVersionAtLeast2 = ManagementUtil.getJavaInfo().isJavaVersionAtLeast(8f); + Assert.assertTrue(javaVersionAtLeast2); + } +}