Ну, я тоже мог догадаться, но я сделал быстрый тест ... Почти как мошенничество ...
Произвольная строка проверяется различными методами. (несколько итераций)
Результаты показывают, что isEmpty () быстрее и действительно более читабелен;
Если isEmpty () недоступен, length () является хорошей альтернативой.
Использование константы, вероятно, не стоит.
"".equals(someString()) :24735 ms
t != null && t.equals("") :23363 ms
t != null && t.equals(EMPTY) :22561 ms
EMPTY.equals(someString()) :22159 ms
t != null && t.length() == 0 :18388 ms
t != null && t.isEmpty() :18375 ms
someString().length() == 0 :18171 ms
В этом сценарии;
"IAmNotHardCoded".equals(someString())
Я бы предложил определить константу в соответствующем месте, поскольку глобальный класс
для всех констант действительно отстой. Если подходящего места нет, возможно, вы делаете что-то не так ...
Customer.FIELD_SHOE_SIZE //"SHOE_SIZE"
Может считаться подходящим местом, где как;
CommonConstants.I__AM__A__LAZY__PROGRAMMER // true
нет.
Для BigIntegers и тому подобного я склонен в конечном итоге определять конечную статику локально; как:
private final static BigDecimal ZERO = new BigDecimal(0);
private final static BigDecimal B100 = new BigDecimal("100.00");
Это меня раздражает, и было бы неплохо с сахаром для BigInts и BigDecimals ...