2014-02-09 7 views
0
DocumentBuilderFactory f = DocumentBuilderFactory.newInstance(); // 

DocumentBuilderFactory является абстрактным классом. newInstance - статический метод. Не могу понять, как это работает. Что происходит?Аннотация экземпляр класса по собственному статическому методу

Я имею в виду, почему это работает ... Если я не ошибаюсь, мы не можем сделать экземпляр абстрактного класса.

+0

Java? Что происходит? Вы пропускаете какой-то контекст и сообщение об ошибке, которое вы видите. –

+0

На самом деле это работает. Я не понимаю, почему это выражение работает. –

+0

Связанные: http://www.javapractices.com/topic/TopicAction.do?Id=21 и http://en.wikipedia.org/wiki/Abstract_factory_pattern –

ответ

0

У вас нет объекта DocumentBuilderFactory с правой стороны от "=".

Это фабричный метод для создания DocumentBuilderFactory вне конструктора.

0

Это похоже на какой-то одноэлементный шаблон, метод newInstance возвращает ТОЧНО тот же тип или возвращает фактический конкретный класс, который расширяет DocumentBuilderfactory? Действительно ли это абстрактно или имеет частный конструктор?

0

DocumentBuilderFactory.newInstance() возвращает экземпляр конкретного подкласса DocumentBuilderFactory. Вы можете прочитать его источник here.

0

newInstance - это статический метод, а не конструктор, поэтому он может создавать экземпляр конкретного подтипа DocumentBuilderFactory. Что он делает. Я не знаю реализации, но я предполагаю, что он создает экземпляр стандартной реализации этого класса.

Смежные вопросы