在我的项目中,我需要将 JVM 版本分配为不同类型:
org.jetbrains.kotlin.gradle.dsl.JvmTarget
org.gradle.api.JavaVersion
为了保持项目的可维护性,我喜欢在“单一位置”定义 JVM 版本。因此,我想 (1) 在不同类型之间进行 convert 或 (2) 从整数创建 JvmTarget
实例和
JavaVersion
实例。 伪代码(一)
JvmTarget.fromInteger(11) // JvmTarget.JVM_11
JavaVersion.fromInteger(11) // JavaVersion.VERSION_11
在
JvmTarget
类中
fromTarget(String)
已经存在。伪代码(2)
JvmTarget.ofJavaVersion(JavaVersion.VERSION_11) // JvmTarget.JVM_11
JavaVersion.ofJvmTarget(JvmTarget.JVM_11) // JavaVersion.VERSION_11
JvmTarget.fromTarget()
之外,我们还有接受 Java
JavaVersion.toVersion()
的 Object
,它可以是整数或字符串1。 因此,要从整数定义两者,您可以这样做:
val javaVersionSetting = 21
val jvmTarget = JvmTarget.fromTarget(javaVersionSetting.toString())
val javaVersion = JavaVersion.toVersion(javaVersionSetting)
或者来自字符串,不涉及任何基本类型的转换:
val javaVersionSetting = "21"
val jvmTarget = JvmTarget.fromTarget(javaVersionSetting)
val javaVersion = JavaVersion.toVersion(javaVersionSetting)
如果有一天你想要三个参加聚会,还有JavaLanguageVersion.of()
,它具有接受整数或字符串的重载。