Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    1

    Passare funzione via parametro

    Salve, ho un problema forse banale da risolvere in Java.

    Sto scrivendo una funzione, chiamiamo ad esempio PRIMA, che istanzia oggetti ed utilizza in particolare due funzioni, chiamiamo FUNZ1 e FUNZ2;
    PRIMA richiama un'altra funzione, ad esempio SECONDA, la quale utilizza FUNZ1 e FUNZ2, e deve saper scegliere automaticamente quale usare.
    Riporto un esempio, perchè a parole è difficile da spiegare:

    codice:
    public PRIMA(){
      ...
      FUNZ1(parametro1);  //richiama la funzione1 con il suo parametro (che è un oggetto)
      SECONDA();
    
      FUNZ2(parametro1,parametro2); //richiama la funzione2 con 2 parametri
      SECONDA();
    
      //SECONDA deve utilizzare prima la FUNZ1 all'interno, e poi la FUNZ2.
    
    }
    Mi pare non sia possibile passare funzioni come parametri, cioè come puntatori, ma sia possibile tramite interfacce.
    Qualcuno ha idea di come risolvere il problema?

    Ringrazio molto in anticipo, per eventuali altre spiegazioni o chiarimenti, chiedete pure!

    Nicola

  2. #2
    Non credo di aver capito le tue necessità... ma mi aggancio alle tue ultime righe.
    In Java non puoi passare un riferimento ad una funzione, come faresti in C/C++, ma puoi fare la seguente cosa:
    - ti scrivi un interfaccia che abbia il metodo funzione()
    - ti scrivi tante classi quanti sono le funzioni che vuoi avere... ogni classe deve implementare l'interfaccia e in particolare la funzione
    - il metodo che poi dovrà scegliere le funzioni riceverà un parametro del tipo corrispondente a quell'interfaccia, ma che in realtà contiene la classe con la funzione giusta

    Esempio:
    codice:
    public interface IFunzione {
    public void funzione(Object oggetto);
    }
    
    public class Funzione1 implements IFunzione {
    public void funzione(Object oggetto) {
    // codice della Funzione 1
    }
    }
    
    public class Funzione2 implements IFunzione {
    public void funzione(Object oggetto) {
    // codice della funzione 2
    }
    }
    
    public class UsoFunzioni {
    public void usoFunzione(IFunzione funzione) {
    // ...
    funzione.funzione(oggetto);
    // ...
    }
    public void esempio() {
    // uso funzione1:
    usoFunzione(new Funzione1());
    // uso funzione2:
    usoFunzione(new Funzione2());
    }
    }
    L'esempio è piuttosto stupido, ma lo puoi riarrangiare alle tue esigenze.
    Spero di esserti stato d'aiuto
    Windows 7 x64 + Ubuntu Linux 10.10 (Default)
    In principio era il C...
    C/C++ & C# & JavaSE/EE Developer

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.