Klasse implementiert Interface

Status
Nicht offen für weitere Antworten.

tobe77

Mitglied
Ich habe vor eine Klasse zu erstellen die von JPanel abgeleitet ist und ein Interface implementiert. Verschiedenen GUI Elemente befinden sich auf dem Panel
Im Interface sollen nur die Methoden vorhanden sein die benötigt werden um auf das Panel zuzugreifen.

Interface t = new Klasse();

wenn ich das Panel auf mein JFrame legen möchte muss ich nach Component casten.

Wieso?

gibt es eine bessere Lösung?

Vielen Dank
 
wieso?
ist dir denn nicht die Bedeutung von Typen, Casten und Parametern klar?
wieso erklärt sich von selbst,
(wenns wirklich nicht klappt, dann nochmal fragen 😉 )

eine bessere Lösung kann es nicht geben, die add() Methode ist nunmal derart unflexibel

du könntest den Schritt höchstens verstecken, indem du eine neue add()-Methode schreibst,
die zu deinem Interface passt und darin auf Component casten
 
also schreib ich mir eine eigene Klasse die von JFrame abgeleitet ist und die Methode add(..) überschreibt.

public void add(ITest i){
super.add((JComponent)i);
}
 
ganz schön aufwendig, brauchst du wirklich dieses Interface-Konzept?
und ein einfacher Cast ohne Subklasse wäre schlimm?

eine anderes Konzept möchte ich noch erwähnen:
im Interface ITest könnte eine Methode getAsComponent() definiert sein, die relativ einfach per

public Component getAsComponent() {
return this;
}

zu implementieren ist,
bringt gegenüber dem Cast kaum Tipparbeit-Ersparnis, aber bietet etwas Typsicherheit,
verhindert, dass beliebige Objekte das Interface implementieren, die werden nämlich (hoffentlich) beim Füllen dieser Methode stutzig werden
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben