我不明白我在将 toString 与我的 UI 混合时遇到的问题

I dont understand a problem im having with an toString while mixing it with my UI

我有一个超类和两个子类。 当我点击一个按钮时,这两个子类被用在我的 ui 上。我想创建一个 Estudiante 并将其放在列表中。 Estudiante 里面有很多属性,所以我在子类和超类上都有 toString 方法。 我已经编辑了 setListData 的属性,因此字符串不再是 required。问题是,现在当我 运行 程序和我尝试添加一个 Estudiante 并显示它时,它在子类和超类的 toString 行上给了我 WhosebugError。如果有人可以尝试用我的代码修复它,我将非常感激。谢谢

没试过,以前只是改变了设置列表的方法,现在理论上是固定的了。

public class Estudiante extends Persona{
    private int numero;
    private int semestre;

    public Estudiante(String unNombre, int unaCedula, String unMail, int unNumero, int unSemestre) {
        super(unNombre,unaCedula,unMail);
        this.setNumero(unNumero);
        this.setSemestre(unSemestre);
    }

Estudiante 的 toString()(我没有发布 get 和 set 方法,因为我认为它们无关紧要)

@Override

    public String toString(){
        return super.toString() + "Numero:" + this.getNumero() + "Semestre: " + this.getSemestre();
    }
    ```

SUPERCLASS TOSTRING(女神异闻录)

@Override
    public String toString(){
        return toString() + "Nombre"+ this.getNombre() + "Cedula " + this.getCedula() + "Mail " + this.getMail();
    }

    public Persona(String unNombre, int unaCedula, String unMail){
        this.setNombre(unNombre);
        this.setCedula(unaCedula);
        this.setMail(unMail);
    }

这是我在 UI

上的内容
private void BotonCrearEstudianteActionPerformed(java.awt.event.ActionEvent evt) {                                                     
        Estudiante unEst=new Estudiante(NombreEstudiante.getText(), Integer.parseInt(CedulaEstudiante.getText()),MailEstudiante.getText(), Integer.parseInt(NumeroEstudiante.getText()), Integer.parseInt(SemestreEstudiante.getText()));
        modelo.agregarEstudiante(unEst);
        ListaEstudiantesJ.setListData(modelo.getListaEstudiantes().toArray());

WhosebugError 在两个 toStrings 的行上,一个在子类上,一个在超类上。

这个

public String toString(){
    return toString()
        + "Nombre"+ getNombre() + "Cedula " + getCedula() + "Mail " + getMail();
}

调用重写的 toString:

public String toString(){
    return super.toString()
        + "Numero:" + getNumero() + "Semestre: " + getSemestre();
}

再次调用原来的 toString。

因此无限循环。

在基础class中有两种可能性:

只有 super.toString() 是正确的:

public String toString(){
    return super.toString()
        + "Nombre"+ getNombre() + "Cedula " + getCedula() + "Mail " + getMail();
}

或者根本就没有 toString。

public String toString(){
    return "Nombre"+ getNombre() + "Cedula " + getCedula() + "Mail " + getMail();
}