Instanzieren eines Neuen Objekts????



  • Kann mir irgendwer erklären warum das funktioniert?
    Eine Instanz der Klasse MenuItem in einem Methodenaufruf
    des Objekts menu erzeugen. Dabei speichere ich die Instanz
    in keine variable und kann demnach auch nicht darauf zugreifen..
    hat das irgendwas mit annonymen Klassen zu tun?

    class Hauptmenu
    extends MenuBar
    {
        Menu menu = new Menu("Datei");
        menu.add(new Menu("Neu");
        this.add(menu);
    }
    

    und was hat das für Vorteile bzw. Nachteile gegenüber der Variante auch in Bezug auf die Verwendung von ActionEvents

    class Hauptmenu
    extends MenuBar
    {
        Menu menu = new Menu("Datei");
        MenuItem item = new MenuItem("Neu");
        menu.add(item);
        this.add(menu);
    }
    

    Und als letzte Frage: Ist es Üblich eine Klasse für Menus aus der Klasse MenuBar abzuleiten oder eher so zu machen?

    class Hauptmenu
    {
       MenuBar bar = new MenuBar();
       Menu menu = new Menu("Datei");
       MenuItem item = new MenuItem("Neu");
       menu.add(item);
       bar.add(menu);
    }
    


  • Freak2003 schrieb:

    Kann mir irgendwer erklären warum das funktioniert?
    Eine Instanz der Klasse MenuItem in einem Methodenaufruf
    des Objekts menu erzeugen. Dabei speichere ich die Instanz
    in keine variable und kann demnach auch nicht darauf zugreifen..

    Na und? Du schreibst ja auch so:

    obj.method(x + 3);
    

    anstatt

    int temp = x + 3;
    obj.method(temp);
    

    hat das irgendwas mit annonymen Klassen zu tun?

    Nö.



  • Ja gut das weiß ich auch, dass man das so abkürzen kann, aber noch mal auf mein Beispiel zu sprechen zu kommen. Wie kann ich dass folgende Listing in der verkürzten Variante umsetzen.

    class MainMenu
    extends MenuBar
    {
       public MainMenu(ActionListener listener)
       {
         Menu menu = new Menu("Datei");
         MenuItem item = new MenuItem("Beenden");
         item.setActionCommand("Beenden");
         item.addActionListener(listener);
         menu.add(item);
         this.add(menu);
        }
    }
    
    class MainMenu
    extends MenuBar
    {
       public MainMenu(ActionListener listener)
       {
         Menu menu = new Menu("Datei");
         menu.add(new MenuItem("Neu")); //wie soll hier die Registrierung hin???
         this.add(menu);
        }
    }
    

Anmelden zum Antworten