In molti casi, voglio scrivere metodi che hanno la stessa funzionalità per diversi tipi di input. Ciò può essere facilmente ottenuto sovraccaricando il metodo se i tipi di parametro sono diversi.
Ma qual è il modo migliore (il più robusto) per risolvere il caso quando i tipi di parametro sono gli stessi (cioè due diverse rappresentazioni dei dati con lo stesso tipo)?
Un esempio di questo sarebbe una matrice di interi che può essere naturalmente memorizzata come int[][]
. Ma cosa succede se vuoi scrivere un metodo che accetta anche la trasposizione della matrice? La trasposizione è anche un int[][]
ma una rappresentazione chiaramente diversa del tutto.
Posso vedere un paio di modi per farlo:
- Fornire i metodi con nomi diversi
- Aggiunta di un flag al metodo
- Disposizione di ogni rappresentazione in classi diverse
Penso che il terzo metodo sia il modo più chiaro per farlo. Sfortunatamente sto lavorando su alcune librerie ad alte prestazioni dove non è una soluzione fattibile.