如果一个变量是string或gstring类型,我想了解一下检查的健壮方法是什么。我认为它与纯Java有所不同:
def var = someFunc();
if (var instanceof String || var instanceof GString) {
String str = var;
}
我之所以这样问,是因为我不想因为错过了Groovy特有的导致难以调试的bug的特性而感到惊讶。
发布于 2011-06-17 05:29:06
Instanceof测试应该有效:
assert "fasd" instanceof String
assert "${this}" instanceof GString
发布于 2016-03-03 19:21:26
另一种方法是使用in
关键字:
groovy:000> t = "hello"
===> hello
groovy:000> t in String
===> true
groovy:000> "${t}" in GString
===> true
in
关键字是成员资格运算符,并被转换为类上的isCase
调用:
groovy:000> String.isCase(t)
===> true
groovy:000> GString.isCase("${t}")
===> true
发布于 2011-06-20 03:41:33
您还可以在Groovy对象上使用.class
方法
def a = "test"
def b = "${a}"
assert a.class == String
assert b.class == org.codehaus.groovy.runtime.GStringImpl
请注意,GString
很容易求值并转换为String
,例如通过调用toString
。
如果您正在寻找类似于模板的功能来传递和利用可重用的字符串定义,那么您应该考虑Groovy
模板引擎。
https://stackoverflow.com/questions/6378718
复制相似问题