Рекомендуется ли StringUtils.EMPTY?
Используете ли вы StringUtils.EMPTY
вместо ""
?
Я имею в виду либо как возвращаемое значение, либо если вы задаете значение переменной String. Я не имею в виду для сравнения, потому что там мы используем StringUtils.isEmpty()
Ответы
Ответ 1
Конечно нет.
Вы действительно думаете, что "" недостаточно ясно?
Константы имеют по существу 3 варианта использования:
- Документируйте значение значения (с постоянным именем + javadoc)
- Синхронизация клиентов с общим значением.
- Предоставьте ярлык для специального значения, чтобы избежать некоторых затрат на инициализацию.
Здесь не применяются.
Ответ 2
Я использую StringUtils.EMPTY
для скрытия литерала, а также для выражения того, что return StringUtils.EMPTY
был полностью ожидаемым, и там должна была возвращаться пустая строка, ""
может привести к предположению, что ""
можно легко изменить во что-то иначе, и это может быть только ошибка. Я думаю, что EMPTY
более выразителен.
Ответ 3
Нет, просто используйте ""
.
Литерал ""
прозрачен как кристалл. Нет никакого недоразумения относительно того, что подразумевалось. Я бы не знал, зачем вам нужна константа класса. Я могу только предположить, что эта константа используется во всем пакете, содержащем StringUtils
вместо ""
. Это не значит, что вы должны использовать его.
Если на тротуаре есть скала, вам не нужно ее бросать.
Ответ 4
Мне не очень нравится использовать его, поскольку return "";
короче return StringUtils.EMPTY
.
Однако одно ложное преимущество использования этого заключается в том, что если вы наберете return " ";
вместо return "";
, вы можете столкнуться с другим поведением (относительно правильной проверки пустой строки или нет).
Ответ 5
Если ваш класс не использует ничего другого из сообщества, то было бы жаль, что эта зависимость зависит только от этого волшебного значения.
Дизайнер StringUtils сильно использует эту константу, и это правильно, но это не значит, что вы также должны использовать ее.
Ответ 6
Я добавлю свои два цента здесь, потому что я не вижу, чтобы кто-то говорил о String
interning и инициализации класса:
- Все литералы
String
в источниках Java интернированы, делая любые ""
и StringUtils.EMPTY
тем же самым объектом
- Использование
StringUtils.EMPTY
может инициализировать класс StringUtils
, поскольку он обращается к его статическому члену EMPTY
, только если он не объявлен final
(JLS специфичен в этой точке)
См. связанный ответ на интернирование строк и Инициализация класса, ссылаясь на JLS 12.4.1.
Ответ 7
Я поражен тем, как много людей счастливы слепо предположить, что "" действительно пустая строка и не случайно (случайно) содержит любой из Unicode замечательных невидимых и непересекающихся символов. Для любви ко всему, что хорошо и порядочно, используйте ПОМОЩЬ, когда можете.
Ответ 8
Нет, потому что мне больше писать. И пустая строка является независимой от plattform (на Java).
File.separator
лучше, чем "/" или "\".
Но делай, как хочешь. Вы не можете получить опечатку типа return " ";
Ответ 9
Честно говоря, я тоже не вижу большого смысла. Если вы хотите сравнить egainst с пустой строкой, просто используйте StringUtils.isNotEmpty(..)
Ответ 10
Я нахожу StringUtils.EMPTY
полезным в некоторых случаях для удобочитаемости. В частности, с:
Также с помощью константы создается ссылка на StringUtils.EMPTY
. В противном случае, если вы попытаетесь создать экземпляр String ""
каждый раз, когда JVM будет проверять, существует ли он в пуле String (что, скорее всего, будет, так что дополнительные затраты на создание экземпляра не будут). Конечно, использование StringUtils.EMPTY
позволяет избежать проверки пула строк?