Heiner KückerMultiple Interface Implementationen in Java |
|
|
Home Java-Seite . Weiterentwicklung_Java . . NullPointer . . Algorithmische . . Symmetrie . . Finder_Feature . . Multiple_Interface . . Implementationen . . Proxy_Methoden . . Speicher_Klassen . WebCam_Demo . JSP WorkFlow . PageFlow FlowControl . Page Flow Engine . Control_and_Command . JSP_Spreadsheet . Domain Parser . Codegenerator_für . hierarchische . Datenstrukturen . Expression_Engine . Formula_Parser . State Transition Engine . AspectJ . Java_Explorer . DBF_Library . Kalender_Applet . SetGetGen . BeanSetGet . CheckPackage . LineNumbers . GradDms . Excel-Export . StringTokenizer . JspDoc . JspCheck . JSP-Schulung . Java Server Pages . Struts . AsciiTabellenLayouter . StringSerial . Silbentrennung . JDBC_Schlüssel- . Generierung . bidirektional/ . unidirektional . gelinkte Liste . Java_Sitemap . Generator . XmlBuilder . RangeMap Alaska-XBase++-Seite Projekte Philosophien Techniken Konzepte Sudoku Kontakt / Impressum Links SiteMap Letzte Aktualisierung: 30.08.2002 |
Multiple Interface ImplementationenFrameworks wie Swing erwarten das Registrieren von Listenern durch Interface-Implementationen. Ein Problem dabei ist, daß eine Klasse ein Interface immer nur einmal implementieren kann. Wird zum Beispiel ein MenuActionListener für das Menü File-Open und ein Menü File-Save-As benötigt entsteht hier ein Dilemma. Eine Lösung wäre ein Feature zum multiplen Implementieren eines Interfaces. Das wird durch die Einführung eines neuen Sprachraumes realisiert.
class InterfaceImpl implements
MenuActionListener as FileOpenImpl,
MenuActionListener as FileSveAsImpl {
...
public FileOpenImpl.doAction( ActionEvent ...){
...
}
public FileSveAsImpl.doAction( ActionEvent ...){
...
}
...
fileOpenMenu.add( this.FileOpenImpl );
fileSaveAsMenu.add( this.FileSveAsImpl );
...
Dieses Problem läßt sich auch mit nichtstatischen inneren Klassen lösen.Mit dem Konzept Multiple Interface Implementationen sind aber weniger Objekte und Referenzen nötig. Dafür müssen andererseits für die virtuellen Methoden- Tabellen der Klassen den zusätzlichen Namensraum unterstützen.
ProblemeWird ein Objekt einer Klasse mit Multipler Interface Implementationen außerhalb des eigenen Codes zu einem Interface gecastet, ist nicht eindeutig, welche Rolle gemeint ist. Hier muß eine Rolle als Default festgelegt werden.
|