我定义了一个类似于以下内容的类:
class Person {
String name
...
}
当我尝试覆盖
name
的setter时,如下所示,我得到StackOverflowError
。class SuperHero extends Person {
void setName(String name) {
this.name = deriveSuperHeroName(name)
}
}
似乎使用
this.name
委托(delegate)给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/