Se si ha il controllo della classe che si desidera istanziare, prendere in considerazione l'utilizzo di un metodo di produzione statico in modo da poter assegnare due nomi separati ed evitare la confusione legata all'overload.
public static Foo createFromIntArray(final int[] ints) { ... }
public static Foo createFromString(final String str) { ... }
Altrimenti, decidere cosa rappresenta il nullo: è un array nullo di ints o una stringa nullo? È possibile che la classe che stai costruendo si comporti in modo diverso l'una data l'una sull'altra. Una volta che sai che cosa rappresenta il tuo nullo, basta lanciarlo su quel tipo nella chiamata al costruttore.
new Foo((String) null);
new Foo((int[]) null);
Infine, suona come si potrebbe essere il passaggio di un riferimento a un oggetto di questo costruttore, invece di un esplicito null
. Forse qualcosa che stai ricevendo da un java.util.Map
. In tal caso, è possibile testare questo oggetto con instanceof
e eseguire il cast sul tipo appropriato prima di inviarlo al costruttore in questione.
fonte
2009-04-06 14:11:00
Per la cronaca, non ho accettato una risposta qui, perché la mia domanda iniziale era talmente fuorviata che è difficile dire cosa è giusto. Grazie per l'input –