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

Ska*_*rab 31 groovy types

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

def var = someFunc();

if (var instanceof String || var instanceof GString) {
   String str = var;
}
Run Code Online (Sandbox Code Playgroud)

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

And*_*erg 32

测试实例应该有效:

assert "fasd" instanceof String
assert "${this}" instanceof GString
Run Code Online (Sandbox Code Playgroud)


Séb*_*nec 15

另一种方法是使用in关键字:

groovy:000> t = "hello"
===> hello
groovy:000> t in String
===> true
groovy:000> "${t}" in GString
===> true
Run Code Online (Sandbox Code Playgroud)

in关键字是成员运算,并得到翻译成isCase的高级应召:

groovy:000> String.isCase(t)
===> true
groovy:000> GString.isCase("${t}")
===> true
Run Code Online (Sandbox Code Playgroud)