@Ezekiel4
Охотник на пиратов и сборщик монолитов

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

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

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


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

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

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