How to verify if an object has certain property?

前端 未结 4 1976
轻奢々
轻奢々 2020-12-29 01:46

I want to use either a value of expected property or a specified default. How to achieve this in groovy?

Let\'s look at the example:

def printName(ob         


        
4条回答
  •  醉梦人生
    2020-12-29 02:06

    Assuming your object is a Groovy class, you can use hasProperty in the object metaClass like so:

    def printName( o ) {
      if( o.metaClass.hasProperty( o, 'name' ) && o.name ) {
        println "Printing Name : $o.name"
      }
      else {
        println o
      }
    }
    

    So, then given two classes:

    class Named {
      String name
      int age
    
      String toString() { "toString Named:$name/$age" }
    }
    
    class Unnamed {
      int age
    
      String toString() { "toString Unnamed:$age" }
    }
    

    You can create instance of them, and test:

    def a = new Named( name: 'tim', age: 21 )
    def b = new Unnamed( age: 32 )
    
    printName( a )
    printName( b )
    

    Which should output:

    Printing Name : tim
    toString Unnamed:32
    

提交回复
热议问题