grails - 如何在不导致 StackOverflowError 的情况下覆盖子类中的 setter?

标签 grails groovy

我定义了一个类似于以下的类:

class Person {

  String name
  ...

}

当我尝试覆盖 name 的 setter 时,如下图,我得到StackOverflowError .
class SuperHero extends Person {

  void setName(String name) {
    this.name = deriveSuperHeroName(name)
  }

}

似乎使用 this.name 赋值代表setName这导致了问题,但我想不出解决它的方法......

最佳答案

这个应该可以正常工作:

class Person 
{
    String name
}

class SuperHero extends Person 
{
    @Override
    void setName(String name) 
    {
        super.setName(deriveSuperHeroName(name))
    }

    def deriveSuperHeroName(name)
    {
        name
    }
}

或者也没有 @Override 注释:
class SuperHero extends Person 
{
    void setName(String name) 
    {
        super.setName(deriveSuperHeroName(name))
    }

    def deriveSuperHeroName(name)
    {
        name
    }
}

关于grails - 如何在不导致 StackOverflowError 的情况下覆盖子类中的 setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25520654/

相关文章:

java - 在两个标签之间以常规方式解析?

grails - 如何在 Grails 中获取请求 URI?

groovy - 使用自定义 gradle 任务

dictionary - 为什么通过括号中的变量访问groovy map总是返回null?

grails - 为什么dbmigrations失败?

Grails 3 - 移动到插件时域不允许 Map 构造函数

grails - 在多对多Szenario中查找对象-Grails

grails - Groovy-具有多个引用的闭合

java - 如何在 JavaEE Web 应用程序中包含 Groovy 控制台

grails - ils。参数中的变量分配了不正确的值