首页 > 解决方案 > 为什么在构造函数中调用此函数会产生 stackoverflow 错误?

问题描述

嗨,我有一个Person类,它有一个fatherComesFirst实例化Person father. 但是,当我在构造函数中调用此方法时,为什么会jvm抛出stackoverflow错误?我是初学者。虽然我相信到目前为止我是正确的。

我的代码。

package intermediate;

public class Person {

    //getters & setters

    private String firstName;

    private String lastName;

    public Person(String firstName, String lastName){
        this.firstName = firstName;
        this.lastName = lastName;
        fatherComesFirst("",lastName);
    }

    public void fatherComesFirst(String firstName, String lastName){
        Person father = new Person(firstName,lastName);
        System.out.println(father.getFirstName()+" "+father.getLastName());
    }

}

标签: javastack-overflow

解决方案


因为每当您创建Person()该类的实例时,它都会调用该函数fatherComesFirst(),该函数在该函数的第一行创建同一类的另一个实例。这是一个无限循环。


推荐阅读