我定义了一个类似于以下的类:
class Person {
String name
...
}
当我尝试覆盖name
的设置器时,如下所示,我得到StackOverflowError
。
class SuperHero extends Person {
void setName(String name) {
this.name = deriveSuperHeroName(name)
}
}
似乎使用this.name
委托给setName
导致问题的分配,但我想不出办法来解决它......
答案 0 :(得分:3)
这个应该可以正常工作:
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
}
}