La mia domanda proviene da quest'altra domanda .
La prima volta che ho letto la domanda, ho capito (forse logicamente) che l'OP chiedeva un modo diverso per inizializzare l'oggetto in modo tale da consentirgli di estendere e semplificare la manutenzione. Quindi la mia risposta.
Tuttavia, alcuni commenti sembrano essere d'accordo con il passare un array in quanto un singolo argomento sarebbe ancora più semplice.
Di solito non trasformiamo una funzione con i parametri # denominati in una funzione con una singola matrice di # posizioni.
public Message(String id, String a, String b){...}
public Message(String[] arguments){...}
public Message(String... arguments){...}
Girare # parametri con nome (tutti dello stesso tipo) in un array è qualcosa che ho fatto nei miei primi giorni come programmatore. Allora, mi resi conto di quanto fossero fragili. Ad esempio, queste strutture sono molto sensibili ai cambiamenti. L'ordine degli elementi all'interno dell'array e la lunghezza dell'array sono importanti, perché mappiamo attributi, campi o variabili in posizioni all'interno dell'array.
La seguente domanda è d'accordo con me. L'unica differenza apparente è che la domanda precedente, la funzione è un costruttore e nell'ultimo è un metodo.
Quindi, osservando entrambe le domande collegate qui, vedo come da una parte stiamo suggerendo di utilizzare gli array nel modo in cui ho commentato e dall'altra parte, siamo scoraggianti dal fare la stessa pratica.
La mia domanda si riduce a, dal punto di vista OOP, Gli array (come strutture dati) sono adatti per i costruttori ma i metodi inadatti?
Se sì. Perché? Applichiamo diverse "regole" per definire le firme del costruttore e del metodo? In definitiva, entrambe sono funzioni.
Se no. Quando è appropriato usare l'uno o l'altro?
Per me, entrambi i casi mancano di manutenibilità, leggibilità e scalabilità.