如何在Groovy中检查实例是否为String或GString类型

时间:2011-06-16 21:16:21

标签: groovy types

如果变量的类型为string或gstring,我想知道检查的强大方法是什么。我想它与纯Java不同:

def var = someFunc();

if (var instanceof String || var instanceof GString) {
   String str = var;
}

我问,因为我不想惊讶于我错过了一个导致难以调试错误的Groovy特定功能。

3 个答案:

答案 0 :(得分:32)

测试实例应该有效:

assert "fasd" instanceof String
assert "${this}" instanceof GString

答案 1 :(得分:12)

另一种方法是使用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

答案 2 :(得分:1)

您还可以在Groovy对象上使用.class方法

def a = "test"
def b = "${a}"

assert a.class == String
assert b.class == org.codehaus.groovy.runtime.GStringImpl

请注意,GString很容易评估并转换为GString,例如致电toString

如果您正在寻找类似于模板的功能以使可重用的字符串定义传递和利用,您应该考虑使用Groovy模板引擎。

请参阅http://groovy.codehaus.org/Groovy+Templates