Если у вас есть контроль над классом, который вы хотите создать, рассмотрите возможность использования статического метода фабрики, чтобы вы могли дать им два отдельных имени и избежать путаницы, связанной с перегрузкой.
public static Foo createFromIntArray(final int[] ints) { ... }
public static Foo createFromString(final String str) { ... }
В противном случае, решите, что представляет ваш нуль: это пустой массив целых или пустая строка? Возможно, что класс, который вы создаете, ведет себя по-разному, учитывая один над другим. Как только вы узнаете, что представляет ваш нуль, просто приведите его к этому типу при вызове конструктора.
new Foo((String) null);
new Foo((int[]) null);
Наконец, звучит так, как будто вы передаете объектную ссылку на этот конструктор вместо явного null
. Возможно, что-то, что вы получаете от java.util.Map
. Если это так, вы можете проверить этот объект с помощью instanceof
и привести к соответствующему типу, прежде чем отправлять его соответствующему конструктору.