Нет такого метода, как Class#getInstance()
.Вы, вероятно, путаете это с Class#newInstance()
.И да, это точно так же, как new
в конструкторе по умолчанию .Вот выдержка из его Javadoc :
Создает новый экземпляр класса, представленный этим объектом Class
. Класс создается как бы с помощью выражения new
с пустым списком аргументов. Класс инициализируется, если он еще не был инициализирован.
В коде
Object instance = Object.class.newInstance();
совпадает с
Object instance = new Object();
Вызов Class#newInstance()
фактически следует за фабричным методом шаблон.
Обновление : видя другие ответы, я понимаю, что в вашем вопросе есть некоторая неопределенность.В тех местах, где использовался метод на самом деле с именем getInstance()
, часто обозначается шаблон Abstract Factory .Он будет «под капотами» использовать new
или Class#newInstance()
для создания и возврата интересующего экземпляра.Это просто, чтобы скрыть все детали о конкретных реализациях, о которых вам, возможно, не нужно знать.
Кроме того, вы также часто видите это имя метода в некоторых (в основном доморощенных) реализациях Singleton шаблон.
См. Также: