Si tiene el control de la clase que desea crear una instancia, considere usar un método de fábrica estático para que pueda darles dos nombres separados y evitar la confusión relacionada con la sobrecarga.
public static Foo createFromIntArray(final int[] ints) { ... }
public static Foo createFromString(final String str) { ... }
De lo contrario, decida qué representa su nulo: ¿Es una matriz nula de ints, o una cadena nula? Es posible que la clase que está construyendo se comporte de manera diferente una sobre la otra. Una vez que sepa lo que representa su valor nulo, simplemente transfiéralo a ese tipo en la llamada al constructor.
new Foo((String) null);
new Foo((int[]) null);
Por último, parece que podría estar pasando una referencia de objeto a este constructor en lugar de una explícita null
. Tal vez algo que obtenga de un java.util.Map
. Si es así, puede probar este objeto con instanceof
y convertirlo al tipo apropiado antes de enviarlo al constructor en cuestión.
Para el registro, no he aceptado una respuesta aquí, porque mi pregunta original fue tan equivocada que es difícil decir lo que es correcto. Gracias por la entrada –