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.
|