Inner class + Leer-Konstruktor

J-4a616e

Mitglied
Hallo,

ich bräuchte Verbesserungsvorschläge für mein Programm, es funktioniert zwar, ist aber, finde ich, unschön gelöst. Ich hab mich bereits ein bisschen umgekuckt, aber konnte nichts hilfreiches finden. Es dreht sich hierbei darum, dass ich 2 Konstruktoren benutze, damit meine ganzen Forms nicht nochmal, an der mit den Ausrufezeichen markierten Stelle, aufgerufen werden und sich ein Forms-Chaos bildet.

Klasse Cotroller
Java:
public Controller(){
    //Wegen inner-class Contribution Row die in GaesteMainForm genutzt wird und nicht nochmal alle Sachen New anlegen soll wie im 2ten Konstruktor
}

public Controller(GaestebuchMain gaestebuchMain){
    this();
    this.gaestebuchMain = gaestebuchMain;
    gaestebuchMainWindow = new GaestebuchMainWindow(this);
    gaesteLoginForm = new GaesteLoginForm(this);
    gaesteMainForm = new GaesteMainForm(this);
    newGuestbookContribution = new NewGuestbookContribution(this);
    windowAddLogin();
    gaestebuchMainWindow.show();
}

public static class ContributionRow extends GuiTableRow{

    Contribution contribution;

    public ContributionRow(Contribution contribution){
        super();
        this.contribution = contribution;
    }
}

Klasse GaesteMainForm
Java:
public void loadContributions() {

    final Controller controller = this.controller;
    List<Contribution> contributions = controller.getAllContributions();

    for (Contribution contribution : contributions) {
        contributionRow = new Controller.ContributionRow(contribution);   <----- !!!!!!
        guiButtonDelete = new GuiButton();
        GuiButton guiButtonEdit = new GuiButton();

(unnötiges Zeugsabgeschnitten)
.
.
.
 
contributionRow = new Controller.ContributionRow(contribution);

In dieser Zeile wird der Konstruktor der geschachtelten Klasse aufgerufen.

Der Konstruktor

public Controller() { ...

wird hierbei nicht benötigt.

Eine geschachtelte Klasse (static) befindet sich nur im Namensraum der umgebenden Klasse, benötigt aber keine Instanz der umgebenden Klasse.

Die Instanz der äusseren Klasse wird nur bei inneren Klassen (kein static) benötigt.
 

Neue Themen


Zurück
Oben