Private конструктор

207
08 мая 2018, 01:14

Можно ли создать объект, если конструктор имеет модификатор private? Если да, то зачем собственно конструктору нужен модификатор доступа, помогите разобраться...

Answer 1

Это нужно, когда объект создается функцией-фабрикой (статической) того же класса. Часто, после создания объекта необходимо вызвать какой-либо его метод (например, для инициализации, которая не может быть выполнена в конструкторе), без вызова которого объектом нельзя пользоваться.

Answer 2

можно. чтобы создавать только из статических методов данного класса. сделать что-то типа фабрики.

Answer 3

Приватный конструктор запрещает создание экземпляра класса вне методов самого класса, например, что гарантировать существование только одного объекта определённого класса, предположим какого-то ресурса, например БД.

Подробнее про паттерн Singleton (Одиночка)

Answer 4

Модификатор доступа private определяет доступ в рамках данного класса, где вы можете создавать объекты. Т.е. вы не сможете создать объект этого класса за его пределами, так например с помощью new из другого класса или блока.

Конечно если вы не используете рефлексию, которая может изменить положение вещей.

Зачем это нужно, ну скажем вы хотите контролировать создание объектов внутри класса.

Answer 5

Создать можно через статический метод фабрику, это делается для того чтобы не создавать объекты напрямую, чтобы именовать конструкторы, но так же можно создать такой объект через рефлексию.

UPD

Ещё такие классы с приватными конструкторами используют для создания утилитарных классов, в которых есть только static методы.

READ ALSO
Несколько EditText с одинаковым ID

Несколько EditText с одинаковым ID

В LinearLayout циклом добавляется фрагмент, укомплектованный в другомxml файле

205
Как правильно писать микро-тесты в Java?

Как правильно писать микро-тесты в Java?

Как лучше писать микро-тесты/тесты на производительность в Java? Какие основные пункты, на которые стоит обратить внимание?

260