@Ezekiel4
Сын маминой подруги

Почему финализированные классы в исходниках java имеют private конструкторы?

В ходе изучения языка открыл для себя исходники и с головой в них погрузился. Сейчас я рассматриваю класс Math и StrictMath. Обратил внимание, что в обоих (и во многих других) есть приватный конструктор и интересный коментарий.

/*
 * Don't let anyone instantiate this class.
 */
private Math() {}


Почему это сделали? Чем плохо создание экземпляра, к примеру, класса StrictMath?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Потому что эти классы - это не классы в общем-то. Классами они сделаны исключительно из-за того, что в джаве нельзя писать никакой код вне класса. Эти утилитарные классы - по сути своей неймспейсы для чистых функций(статических методов). Создавать их инстансы бессмысленно, и потому запрещено.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Ничем особенным. Просто библиотечные функции сильнее защищают от «нештатного» использования.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Emphasoft Санкт-Петербург
от 150 000 до 300 000 ₽
Kotelov Санкт-Петербург
от 150 000 до 190 000 ₽
SCHNEIDER GROUP Санкт-Петербург
от 160 000 до 190 000 ₽