如何从VM参数中优雅地获取布尔值?我的解决方案并不像我一样简单
必须测试它是否为null否则我会得到 IllegalArgumentException
必须将整个String转换为大写或小写并测试是否 它完全是“假”或“真”,否则我会有同样的 我脸上的异常。
即。
val property = System.getProperty("some.property.name")
property != null && property.toLowerCase == "true"
还有另外一种方法吗?感谢。
答案 0 :(得分:5)
Scala具有包装Java系统属性API的sys.props
对象,因此您可以处理Option
而不是null
。
sys.props.get("property.name") exists (_ equalsIgnoreCase "true")
答案 1 :(得分:2)
scala> "true" equalsIgnoreCase "TruE"
res0: Boolean = true
scala> "true" equalsIgnoreCase System.getProperty("does.not.exist")
res1: Boolean = false
答案 2 :(得分:2)
java.lang.Boolean#getBoolean(String)
正是您所寻找的:
scala> import java.lang.Boolean
import java.lang.Boolean
scala> Boolean.getBoolean("some.property.name")
res0: Boolean = false
scala> System.setProperty("foo", "true")
res1: String = null
scala> Boolean.getBoolean("foo")
res2: Boolean = true
scala> System.setProperty("bar", "false")
res3: String = null
scala> Boolean.getBoolean("bar")
res4: Boolean = false
scala> System.setProperty("baz", "lorem ipsum")
res5: String = null
scala> Boolean.getBoolean("baz")
res6: Boolean = false