Dubbio urgente..metodo con tipo di ritorno generico

di il
6 risposte

Dubbio urgente..metodo con tipo di ritorno generico

Salve ragazzi,
avrei bisogno di una mano per risolvere un piccolo problema. Ho un interfaccia con un metodo del tipo
 public interface interfaccia
 {
 	public abstract void esegui();
 }
 
Implementando tale metodo in diverse classi con esigenze differenti, specialmente per quanto riguarda il tipo di ritorno , avevo pensato ad una soluzione del tipo:

public interface interfaccia<T>
{
	public abstract T esegui();
}
La domanda è : "Procedendo in questo modo, mi è ancora possibile non restituire nulla? Per meglio intenderci , potrei mantenere per alcune classi
void esegui()[/code ], mentre ad esempio per altre [code]boolean esegui()[/code ] ?" . Ringrazio chiunque possa darmi una mano

6 Risposte

  • Re: Dubbio urgente..metodo con tipo di ritorno generico

    beginner32 ha scritto:


    Procedendo in questo modo, mi è ancora possibile non restituire nulla?
    No, devi comunque restituire "qualcosa", anche solo un null. Qualunque sia la parametrizzazione concreta, deve essere un tipo reference. Quindi il valore di ritorno deve essere un oggetto oppure appunto null.

    La questione però è anche un'altra. Se hai fatto una interface, si presume perchè vuoi usare N sue implementazioni usandole "polimorficamente" attraverso la tua interface. Quindi come è parametrizzata la variabile di tipo interfaccia?
  • Re: Dubbio urgente..metodo con tipo di ritorno generico

    Ciao, ti ringrazio innanzitutto per la risposta. La mia domanda sorge da un mio tentativo di implementazione del pattern command, ho pensato quindi ad un' interfaccia del tipo
    
    public interface Command<T> 
    {
    	public abstract T execute(I_DTO dto);
    }
    
    Dove I_DTO sarebbe un' interfaccia "vuota" da implementare nella classi Data transfer object..non è una soluzione bellissima però non ho idea su come fare quando i metodi dipendono dalle loro rispettive classi ...in alcuni casi vorrei che execute tornasse un boolean in modo tale da poter compiere altre azioni, mentre in altri preferirei un void execute(I_DTO dto)...Se ho capito bene ,seguendo la strategia dei generics, devo per forza far tornare qualcosa. Quindi in quei casi potrei tornare semplicemente null? Se si, cosa mi conviene inserire tra le parentesi angolari in quel caso? potrei scrivere Object? Grazie ancora
  • Re: Dubbio urgente..metodo con tipo di ritorno generico

    beginner32 ha scritto:


    Dove I_DTO sarebbe un' interfaccia "vuota" da implementare nella classi Data transfer object
    Se è una interfaccia "vuota" .... cosa ne fai nelle implementazioni di execute?? A meno che poi .... fai un cast ad un DTO specifico ....

    Puoi chiarire meglio cosa vuoi fare e perché? Descrivi lo scenario generale che vuoi realizzare, che vediamo ...
  • Re: Dubbio urgente..metodo con tipo di ritorno generico

    Si, faccio un cast verso lo specifico DTO che serve al momento..Il mio obiettivo finale è la realizzazione di un sistema software che gestisce prenotazioni ad eventi. È parte integrante di un esame universitario e per realizzarlo ovviamente ho dei requisiti da rispettare, tra cui l impiego di diversi pattern. Avendo impostato una architettura three tier, ho ritenuto DAO e DTO utili, così come Front Controller e Command, da cui sorge la mia domanda posta qui sopra. Non avendo molta esperienza in java, avevo dei forti dubbi sul corretto impiego de generics (avendo utilizzato solo i template del c++). poiché il metodo execute delle classi che implementano l interfaccia command mi permette il passaggio da livello di applicazione al livello della logica di business, ho pensato che , in alcuni casi tornando un boolean, avrei avuto la possibilità di caricare una view piuttosto che un altra. Per fare ciò ho scritto
    public interface command<T>
    { public abstract T execute(I_DTO);
    }
    
    nell interfaccia , mentre in un.command concreto
    
    public class concreteCommand implements Command<Boolean>
    {
       public Boolean execute(I_DTO){
       ...
       return Boolean ;}
       
    } 
    //mentre nel caso in cui volessi il metodo void
    
    public class concreteCommand implements Command<Void>
    {
       public Void execute(I_DTO){
       ...
       return null ;}
       
    }
    
  • Re: Dubbio urgente..metodo con tipo di ritorno generico

    beginner32 ha scritto:


    poiché il metodo execute delle classi che implementano l interfaccia command mi permette il passaggio da livello di applicazione al livello della logica di business
    Ma il Command Pattern ..... non è propriamente per questo ....
  • Re: Dubbio urgente..metodo con tipo di ritorno generico

    andbin ha scritto:


    beginner32 ha scritto:


    poiché il metodo execute delle classi che implementano l interfaccia command mi permette il passaggio da livello di applicazione al livello della logica di business
    Ma il Command Pattern ..... non è propriamente per questo ....
    Ok, avrò commesso sicuramente qualche errore...
    Gentilmente potresti indicarmi un esempio con uso più appropriato di questo pattern?
    Inoltre te ne sarei grato se potessi suggerirmi un qualcosa di più idoneo per compiere passaggi fra i diversi livelli di un applicazione stand alone secondo l'architettura 3-tier. Evidentemente non ho ancora appreso bene come permettere la comunicazione tra livelli adiacenti.
Devi accedere o registrarti per scrivere nel forum
6 risposte