!646 简单pr: javainfo适配jdk18和以下

Merge pull request !646 from dazer007/v6-dev-javaInfo-jdk17
This commit is contained in:
Looly 2022-06-08 08:15:11 +00:00 committed by Gitee
commit cd69a72cb6
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 82 additions and 3 deletions

View File

@ -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}7811151718返回1位java10及其之后的版本返回值为2位
* <ul>
* <li>JDK 1.7.0_80{@code 7}</li>
* <li>JDK 1.8.0_211{@code 8}</li>
* <li>JDK 11.0.2{@code 11}</li>
* <li>JDK 13.0.11{@code 13}</li>
* <li>JDK 15.0.7{@code 15}</li>
* <li>JDK 17.0.3{@code 17}</li>
* <li>JDK 18.0.1.1{@code 18}</li>
* </ul>
* @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();
}
}

View File

@ -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);
}
}