Я хотел бы знать, какой способ более подходит и эффективен в достижении чего-то вроде: проверки наличия текста в поле
if(text1.equals("") || text2.equals("") || text3.equals("") || text4.equals("")) {
//Do Stuff
}
Я вижу, как это быстро становится беспорядочным с более чем двумя полями, и хотелось бы знать, правильно ли это это сделать или существуют альтернативы?
Вы можете сделать что-то вроде этого:
if (Arrays.asList(text1, text2, etc).contains(""))
Но лучшее решение будет зависеть от контекста.
Обратите внимание, что это немного медленнее, чем ваш текущий код. Если вы не выполняете этот тест на bazillion раз в секунду, тем не менее, это не имеет значения.
EDIT, поскольку в комментариях было сказано, что строки с пробелами также должны удовлетворять условию... Вот так:
private static final Pattern PATTERN = Pattern.compile("\\s*");
private static boolean emptyOrSpacesOnly(final String... strings)
{
for (final String s: strings)
if (PATTERN.matcher(s).matches())
return true;
return false;
}
Затем в коде:
if (emptyOrSpacesOnly(text1, text2, etc))
Решение fge, безусловно, умное и сокращает строки кода. Тем не менее, я чувствую, что некоторые значения теряются при взгляде на этот фрагмент кода.
Я бы посоветовал вам использовать читаемый код, даже если он немного более подробный. Мое решение состояло бы в том, чтобы проверить эти предварительные условия перед началом метода. Если предварительное условие терпит неудачу, выбросьте исключение.
Либо напишите свои собственные методы проверки, либо используйте что-то вроде Apache Commons Lang Validate
. Тогда ваш код будет выглядеть примерно так:
Validate.notEmpty(text1, "error message");
Validate.notEmpty(text2, "error message");
Validate.notEmpty(text3, "error message");
Validate.notEmpty(text4, "error message");
// This line is only reached if all fields are non-empty
Я думаю, что это легко читать, что составляет половину битвы.