From 6a02b908445d6661ec3e986bb140900894437b68 Mon Sep 17 00:00:00 2001 From: duandazhi Date: Wed, 8 Jun 2022 15:37:10 +0800 Subject: [PATCH 1/3] =?UTF-8?q?JavaInfo=20=E5=A2=9E=E5=8A=A0=E5=AF=B9=20jd?= =?UTF-8?q?k[13-18]=E5=88=A4=E6=96=AD=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/extra/management/JavaInfo.java | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) 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..d0bf2c5ad 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})。 @@ -291,6 +298,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 +395,4 @@ public class JavaInfo implements Serializable { return builder.toString(); } - } From 26206c058e0b1732e041867473cb04060161b02b Mon Sep 17 00:00:00 2001 From: duandazhi Date: Wed, 8 Jun 2022 15:46:17 +0800 Subject: [PATCH 2/3] =?UTF-8?q?JavaInfo=20=E6=96=B0=E5=A2=9E=EF=BC=9AgetVe?= =?UTF-8?q?rsionIntSimple=20=E8=8E=B7=E5=8F=96=E7=AE=80=E5=8C=96=E7=89=88?= =?UTF-8?q?=E7=89=88=E6=9C=AC=EF=BC=881.8=20=3D>8,=201.7-->7,=2017->17?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/extra/management/JavaInfo.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) 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 d0bf2c5ad..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 @@ -88,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}值。 * From f07fb4d68db16c355d7256813f15737a222844f5 Mon Sep 17 00:00:00 2001 From: duandazhi Date: Wed, 8 Jun 2022 16:03:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?JavaInfo=20=E6=B7=BB=E5=8A=A0=EF=BC=9ATest?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hutool/extra/management/JavaInfoTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 hutool-extra/src/test/java/cn/hutool/extra/management/JavaInfoTest.java 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); + } +}