How to check if an instance is of type String or GString in Groovy

后端 未结 3 1387
小蘑菇
小蘑菇 2021-01-03 17:56

I would like to learn what the robust way of checking, if a variable is of type string or gstring, is. I suppose it is different than in pure Java:

def var =         


        
相关标签:
3条回答
  • 2021-01-03 18:47

    Instanceof tests should work:

    assert "fasd" instanceof String
    assert "${this}" instanceof GString
    
    0 讨论(0)
  • 2021-01-03 18:54

    Another way is to use the in keyword:

    groovy:000> t = "hello"
    ===> hello
    groovy:000> t in String
    ===> true
    groovy:000> "${t}" in GString
    ===> true
    

    The in keyword is the membership operator, and gets translated to an isCase call on the class:

    groovy:000> String.isCase(t)
    ===> true
    groovy:000> GString.isCase("${t}")
    ===> true
    
    0 讨论(0)
  • 2021-01-03 18:57

    You can also use the .class method on a Groovy object

    def a = "test"
    def b = "${a}"
    
    assert a.class == String
    assert b.class == org.codehaus.groovy.runtime.GStringImpl
    

    Note that a GString is easily evaluated and turned into a String, e.g. by calls to toString.

    If you're looking for template-like functionality to have re-usable string definitions to pass around and leverage, you should consider the Groovy template engine.

    see http://groovy.codehaus.org/Groovy+Templates

    0 讨论(0)
提交回复
热议问题