Apache StringUtils.isNumeric() спецификация метода говорит:
Проверяет, содержит ли строка только цифры в Unicode. Десятичная точка не является символом юникода и возвращает false.
Null вернет false. Пустой String ("") вернет true.
Является ли это логически правильным? Почему они видят пустую строку как числовую?