Exceptions

JavaIsTheBest

Bekanntes Mitglied
Hallo,
ich habe eine Aufgabe zu Exceptions und hätte ein paar Fragen dazu.

1) Warum muss eine Exception in der Schnittstelle Queue geworfen werden und nicht erst in der Implementierungsklasse?
2) Wozu die finale Variable queue und als Parameter, auch eine Variable vom Typ Queue. Ich weiß, dass ist der konstruktor. Nur sehe ich nicht den Grund, warum das so implementiert ist.

Java:
class QueueEmptyException extends Exception {
public final Queue queue;
public QueueEmptyException (Queue q) {
queue = q;
}
}

3) Könnte ich die Klasse ListElement auch so implementieren, anstatt wie in der Lösung.

Java:
public class ListElem {
   
    ListElem s;
    ListElem next;
   
    public ListElem(ListElem s){
        this.s=s;
        next=null;
    }

}
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    344,9 KB · Aufrufe: 28
Zuletzt bearbeitet:

Joose

Top Contributor
1) Warum muss eine Exception in der Schnittstelle Queue geworfen werden und nicht erst in der Implementierungsklasse?

Das Interface gibt nur vor wie die Methode deklariert ist, inkl möglicher Exceptions.
Geworfen wird die Exception dann erst in der Implementierung.

2) Wozu die finale Variable queue und als Parameter, auch eine Variable vom Typ Queue. Ich weiß, dass ist der konstruktor. Nur sehe ich nicht den Grund, warum das so implementiert ist.

Damit nach dem Konstruktor aufruf dem Exception Objekt kein anderes Queue Objekt zugewiesen werden kann.
Die Exception bekommt das Queue Objekt übergeben bei welchem der Fehler aufgetreten ist, somit kann die Exception dort wo sie gefangen wird mehr Informationen bereitstellen.
 

mrBrown

Super-Moderator
Mitarbeiter
Ist Falsch. Du bräuchtest dann das ListItem, um das ListItem zu erstellen. Das ListItem soll ja eben den String enthalten - das speichert den Wert, den die Liste an der position hat
 

JavaIsTheBest

Bekanntes Mitglied
Ich verstehe noch nicht ganz den Unterschied zwischen ListElement und einem einzelnen Element (in der Aufgabe ein String).

Die Knoten einer verketteten Liste repräsentieren, doch ein einziges Element (hier: Objekte vom Typ String? Was ist dann ListElement?
 

mrBrown

Super-Moderator
Mitarbeiter
Deine ListItem's sind die "Behälter" für den Listeninhalt.

Stell dir deine ListItems als Klarsichthüllen vor, die kannst du aneinanderheften, das ist dann deine List. In den Hüllen liegt dann der eigentliche Inhalt, hier der String
 

JavaIsTheBest

Bekanntes Mitglied
Sorry, dass ich soviel frage

public String element;
public ListElem next;

Warum ist next nicht vom Typ String?
Die verkettete Liste soll doch auf den Inhalt, des nächsten Elements zeigen?

Und warum ist element vomTyp String da?
Um den "Behälter" zu füllen?
 

mrBrown

Super-Moderator
Mitarbeiter
Um bei der Analogie mit Klarsichtfolien zu bleiben:
Du hängst mehrere ListElem (Klarsichtfolien) aneinander, jede einzelne enthält dann den entsprechenden String(Zettel oä). Du kannst aber nicht einfach an eine ListElem als nächstes Element einen String anhängen, der muss immer in einem Behälter sein. (An Klarsichtfolien nicht einfach einen Zettel, sondern der Zettel in eine neue Folie).

Die Liste zeigt immer auf das nächste ListenElement, und das Element kennt seinen Inhalt.
Nach außen wirkt es so, als ist nur der Inhalt drin, aber zum Verwalten braucht die Liste intern ListElems.
 

Neue Themen


Oben