Heiner Kücker

Multiple 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 Implementationen

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

Probleme

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