Почему у объекта Boolean есть открытый конструктор в Java?

Документация для конструктора new Boolean (логическое значение) в Java гласит:

Примечание. конструктор. Если не требуется новый экземпляр, статическая фабрика valueOf (boolean) , как правило, является лучшим выбором. Это, вероятно, даст значительно лучшую производительность пространства и времени.

Если да, то почему этот конструктор общедоступный и не устаревший? Есть ли веская причина использовать этот конструктор вместо Boolean.valueOf () ?

25
задан mustpax 15 September 2011 в 16:16
поделиться

2 ответа

valueOf() был добавлен только в Java 1.4, поэтому кажется, что конструкторы существуют для обратной совместимости.

Этот билет объясняет причины отказа от устаревших конструкторов:

Из-за нарушения, которое может иметь место для устаревания API, в настоящее время API должен быть «активно опасным» для быть устаревшим, как Thread.stop. Хотя использование этого конструктора, безусловно, неуместно, оно не поднимается (и не опускается) до уровня опасности, который следует исключить в JDK. В будущем мы можем добавить средство «клеветы», чтобы пометить элементы API, которые не так плохи, что их следует считать устаревшими, но их не следует использовать в большинстве случаев. Этот конструктор будет хорошим кандидатом на клевету.

Я не могу представить себе реалистичный сценарий, где использование конструкторов Boolean было бы лучшим способом сделать что-то полезное.

19
ответ дан 28 November 2019 в 21:38
поделиться

Другая, не обязательно хорошая причина, вероятно, состояла бы в том, чтобы просто поддерживать ее в соответствии с другими нативными обертками.

5
ответ дан 28 November 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: