我想在groovy中动态设置字段,所以我有一个从数据库中获取数据的java代码,我在java中使用Bindings.setVariable()
设置了groovy字段。
我想知道是否可以在groovy中转换每个基元类型。
String
至int
,String
至float
,依此类推。
所以我总是可以发送一个字符串并在其他原始时间进行投射,这取决于我的常规字段的类型。
答案 0 :(得分:3)
@Opal的as
解决方案很好,但我还想提一下Groovy JDK为CharSequence添加一些方便的原始检查和转换方法,String实现:
isDouble
和asDobule
isFloat
和asFloat
isLong
和asLong
isInteger
和asInteger
有趣的是,它isFloat
似乎很贪婪,返回true
浮点超出其范围。
['2', '2.2', '2' * 10, "${Double.MAX_VALUE}"].each { s ->
switch (s) {
case { it.isInteger() }:
int i = s.toInteger()
println "String '$s' -> int $i"
break
case { it.isLong() }:
long l = s.toLong()
println "String '$s' -> long $l"
break
case { it.isFloat() }:
float f = s.toFloat()
println "String '$s' -> float $f"
break
case { it.isDouble() }:
double d = s.toDouble()
println "String '$s' -> double $d"
break
default:
println "$s is not a supported primitive"
}
}
打印出来
String '2' -> int 2
String '2.2' -> float 2.2
String '2222222222' -> long 2222222222
String '1.7976931348623157E308' -> float Infinity
答案 1 :(得分:2)
这取决于你究竟需要什么,但下面的一段代码效果很好:
assert '2' as Integer == 2
assert '2.2' as Double == 2.2