使用此方法时,如何解决StackOverflowError。关键词

时间:2018-08-24 07:21:57

标签: java

我有基类Triangle和3个派生类PerimetertAreatheightt,它们的命名方法为main,{{1 }}和main1。 我问用户在基类中要执行什么操作。如果用户输入1,则应调用继承的类main2,然后输入2,然后调用main3,依此类推。

Perimetert

有人可以更正此代码吗?

1 个答案:

答案 0 :(得分:0)

这样的代码有问题:

this.treeFlattener = new MatTreeFlattener(
  this.transformer, this._getLevel, this._isExpandable, this._getChildren
);
this.treeControl = new FlatTreeControl<SkillFlatNode>(
  this._getLevel, this._isExpandable
);
this.dataSource = new MatTreeFlatDataSource(
  this.treeControl, this.treeFlattener
);

skillService.dataChange.subscribe(data => {
  this.dataSource.data = data;
});

是它创建了无限循环。

public void main1()
{
    this.main1();
}

第1行被调用(通过外部方法),它触发了第2行,该行调用了第1行,这触发了第2行,该行调用了第1行,...

因此,是的,这势必会导致问题。如果您想使用递归方法(方法自称),请确保它们总是有可能结束

public void main1() // line 1
{
    this.main1(); // line 2
}