如何在Groovy中将字符串转换为现有对象?

时间:2018-08-08 08:02:54

标签: groovy

如果我仅知道现有对象的文字名称,如何调用其方法?

例如:

class Cat {
    def bark() {
        println "I am a cat."
    }
}

class Dog {
    def bark() {
        println "I am a dog."
    }
}

def cat = new Cat()
def dog = new Dog()

def animal = 'cat'
"${animal}".bark() // Error

如下,我只知道动物的名字(也许是猫或狗)。如何使用该对象?

2 个答案:

答案 0 :(得分:1)

如果将catdog定义为字段,则可以使用this

this."${animal}".bark()

this[ animal ].bark()

答案 1 :(得分:0)

def animals = [
  cat: new Cat(),
  dog: new Dog(),
]

def name = 'cat'
animals[name].bark()