Прежде всего, вы должны понимать, что ссылки на конструкторы — это просто особая форма ссылок на методы. Смысл ссылок на методы заключается в том, что они не вызывают метод, на который ссылаются, а предоставляют способ определить функцию, которая будет вызывать метод при оценке.
Примеры в связанной статье могут показаться не такими уж полезными, но это общая проблема коротких автономных примеров кода. Точно так же, как и с программой «hello world». Это не более полезно, чем набирать текст «hello world» прямо в консоли, но в любом случае это не так. Его цель — продемонстрировать язык программирования.
Как показал assylias, существуют варианты использования уже существующих функциональных interface
с использованием JFC API.
Что касается полезности пользовательского функционального интерфейса, который будет использоваться вместе со ссылкой на конструктор, вы должны подумать о причине использования (функционального) interface
в целом: абстракция.
Поскольку целью interface
является абстрагирование базовой операции, варианты использования — это места, где вы не хотите выполнять безусловную операцию new SomeType(…)
.
Одним из примеров является общеизвестный шаблон Factory, в котором вы определяете interface
для создания объекта, а реализация factory через ссылку на конструктор — это только один вариант из бесконечных возможностей.
Еще одним важным моментом являются всевозможные Generic-методы, где нужна возможность конструировать экземпляры неизвестного из-за стирания типа экземпляра. Они могут быть реализованы через функцию, которая передается в качестве параметра, и подходит ли один из существующих функциональных interface
s или требуется пользовательский, просто зависит от требуемого количества и типов параметров.
person
Holger
schedule
01.04.2015