我定义了一个类似于以下的类:
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/