変数が文字列型またはgstring型である場合、堅牢なチェック方法を学習したいと思います。私はそれが純粋なJavaとは異なると思う:
def var = someFunc();
if (var instanceof String || var instanceof GString) {
String str = var;
}
デバッグが難しいバグの原因となるGroovy固有の機能を見逃してしまったことに驚いたくないので、お願いします。
Instanceofテストは動作するはずです:
assert "fasd" instanceof String
assert "${this}" instanceof GString
別の方法は、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
Groovyオブジェクトで.class
メソッドを使用することもできます
def a = "test"
def b = "${a}"
assert a.class == String
assert b.class == org.codehaus.groovy.runtime.GStringImpl
GString
は簡単に評価され、String
に変換されることに注意してください。 toString
の呼び出しによって。
再利用可能な文字列定義を渡して活用するテンプレートのような機能を探している場合は、Groovy
テンプレートエンジンを検討する必要があります。