Видео: How To Make A Self-Replicating Virus 2025
Иногда вы хотите создать класс Java, который не может быть создан вообще. Такой класс полностью состоит из статических полей и методов. Хорошим примером в Java API является класс
Math
.
Его методы предоставляют функции типа утилит, которые на самом деле не связаны с конкретным объектом. Возможно, вам придется создавать похожие классы самостоятельно. Вы можете создать класс со статическими методами для проверки входных данных, например, или класса доступа к базе данных, который имеет статические методы для извлечения данных из базы данных. Вам не нужно создавать экземпляры любого из этих классов.
Вы можете использовать простой трюк, чтобы кто-либо не мог создать экземпляр класса. Чтобы создать экземпляр класса, у вас должен быть хотя бы один публичный конструктор. Если вы не предоставляете конструктор в своем классе, Java автоматически вставляет конструктор по умолчанию, который является общедоступным.
Все, что вам нужно сделать, чтобы предотвратить создание экземпляра класса, затем предоставляет отдельный частный конструктор, например:
public class Validation
{
private Validation () {} // предотвращает экземпляры
// статические методы и поля здесь
}
Теперь, потому что конструктор является закрытым, класс не может быть создан.
Кстати, класс
Math
использует этот метод, чтобы вы не могли создавать экземпляры из него. Вот фактический фрагмент кода из класса
Math
:
public final class Math {
/ **
* Не позволяйте кому-либо создавать экземпляр этого класса.
* /
private Math () {}
Если этот трюк достаточно хорош для людей, которые написали класс
Math
, это, вероятно, достаточно для вас.
