Metodo con parametro generico

di il
3 risposte

Metodo con parametro generico

Ciao,
ho bisogno di un metodo che a partire da un oggetto mi crea un secondo oggetto di tipo diverso settando determinati campi.

Mi spiego meglio, il mio metodo può ricevere di volta in volta solo uno tra (tipi differenti) Oggetto_1 , Oggetto_2, Oggetto_3 e restituire sempre Oggetto_4.
Se gli viene passato Oggetto_1 allora crea un Oggetto_4 settando solo la proprietà nome (che è proprio solo dell 1), se Oggetto_2 allora crea un Oggetto_4 settando solo la proprietà cognome, e così via.

Anziché fare un metodo che prende in input i 3 oggetti ed avere ad ogni chiamata una roba del tipo call(Oggetto_1 , null, null),
pensavo di farne uno generico:
call(generico t), che poi fa logica sul tipo reale passato (è un'istanza di Oggetto_1 ? setta solo il nome, ecc).

Non ho capito come fare, è possibile?

Grazie

3 Risposte

  • Re: Metodo con parametro generico

    Prova ad utilizzare il varargs, che va usato quando c'è un numero variabile di parametri(se non ho capito male il problema).
  • Re: Metodo con parametro generico

    Test90 ha scritto:


    Anziché fare un metodo che prende in input i 3 oggetti ed avere ad ogni chiamata una roba del tipo call(Oggetto_1 , null, null),
    pensavo di farne uno generico:
    call(generico t), che poi fa logica sul tipo reale passato (è un'istanza di Oggetto_1 ? setta solo il nome, ecc).
    Di per sé, tecnicamente, è possibile fare il metodo che riceve un generalizzato Object e poi nel metodo fare il test con instanceof (o quello più "stretto" direttamente sul Class) per determinare di che tipo è e ragionare di conseguenza.

    Ma in generale non è una buona/bella cosa. Sarebbe preferibile ragionare diversamente ma dovresti spiegare meglio lo scenario e le motivazioni di questo affinché si possano fare valutazioni migliori.
  • Re: Metodo con parametro generico

    Tre metodi in overload in una classe di utilità non vanno bene?
    
    public class ConversionUtils {
          public static Object4 convert(Object 1 a)
          {
    	// TODO
    	return null;
          }
    
          public static Object4 convert(Object 2 a)
          {
    	// TODO
    	return null;
          }
    
          public static Object4 convert(Object 3 a)
          {
    	// TODO
    	return null;
          }
    
    }
    
    Difficile dare suggerimenti migliori senza sapere il contesto, ma almeno nel caso in cui le varie classi ObjectX non vengano subclassate mi sembra la funzione più pulita ed elegante.
Devi accedere o registrarti per scrivere nel forum
3 risposte