Funktion als Parameter



  • Hallo zusammen,

    ich habe drei Funktionen, die alle gleich aufgebaut sind und nur an ganz besimmmten Stellen verschiedene Untermethoden aufrufen. Um Datenredundanz zu vermeiden, möchte ich alles in eine Methode stecken. Jetzt muss ich per Parameter irgendwie bestimmen, wann welche Unterfunktion aufgerufen wird.

    Nun ist es leider in Java nicht möglich einen Zeiger auf eine Funktion zu übergeben. Gibt es irgendwie eine andere Technik, dir mir da behilflich sein kann oder bleibt mir keine ander Wahl, als mittels einer int-Variable Werte abzufragen und je nach dem die richtige Funktion aufzurufen?

    Vielen Dank
    LG, freakC++



  • Polymorphie.



  • kann mir wie bei meinem Problem helfen?

    Soll ich eine Überklasse bilden?



  • Ich verstehe nicht ganz was du machen willst. Paar Stichpunkte wären Observer Pattern (Standard in Java für Callbacks und ähnliches) oder Strategy/Template Pattern.



  • Ich möchte Coderedundanz verhindern. Ich habe drei lange Methoden, die allesamt identisch aussehen, aber an verschiedenen Stellen unterschiedliche Submethoden aufrufen. Ich möchte dies elegant lösen, indem ich irgendwie per Parameter sage, welche Methode verwendet werden soll.

    Könnt ihr mir vielleicht konkretere Hinweise geben? Danke 😃



  • Ich habe jetzt ein Enum erstellt und damit alles ein bisschen eleganter gemacht. Ich denke jedoch, dass es noch schöner geht 😃

    LG, freakC++



  • freakC++ schrieb:

    Ich möchte Coderedundanz verhindern. Ich habe drei lange Methoden, die allesamt identisch aussehen, aber an verschiedenen Stellen unterschiedliche Submethoden aufrufen. Ich möchte dies elegant lösen, indem ich irgendwie per Parameter sage, welche Methode verwendet werden soll.

    Du bist seit 4 Jahren im C++-Forum regstriert und kannst mit dem Begriff Polymorphie nichts anfangen?

    interface Submethoden {
      void meineSubmethode();
    }
    
    class SubmethodenImpl1 implements Submethoden {
      void meineSubmethode() { 
        System.out.println("Spezielles Blabla Nummer 1"); 
      }
    }
    
    class Blub {
      void meineParametrierbareMethode(Submethoden s) {
        System.out.println("Allgemeines Blabla");
    
        // jetzt je nach Parameter was anderes machen:
        s.meineSubmethode();
    
       System.out.println("Wieder allgemeines Blublub.");
      }
    }
    
    ...
    
    Blub b = new Blub();
    
    // Variante 1 mit benannter Klasse
    b.meineParametrierbareMethode(new SubmethodenImpl1());
    
    // Variante 2 mit anonymer Klasse
    b.meineParametrierbareMethode(new Submethoden() {
      void meineSubmethode() {
        System.out.println("Sehr spezielles Blabla");
      }
    });
    

    Disclaimer: Ich bin kein Java-Programmierer, im Zweifelsfall ist das alles Pseudocode 😉



  • Bashar schrieb:

    Du bist seit 4 Jahren im C++-Forum regstriert und kannst mit dem Begriff Polymorphie nichts anfangen?

    Das liegt daran, dass lieber 20 Seiten über void main, als über sinnvolle Dinge, geredet wird.


Anmelden zum Antworten