Я только изучаю Java, и у меня возникли некоторые проблемы. Здесь у нас есть простой заводской шаблон:
public class SomeFactory {
...
public static void registerProduct(String name, Class extends IProduct > f)
}
public SomeProduct implements IProduct {
static {
SomeFactory.register("some product", SomeProduct.class);
}
...
}
Все продукты должны зарегистрируйтесь на заводе.
Но перед использованием этого кода должны быть загружены все классы продуктов.
Я могу поместить Class.forName ()
где-нибудь, например, в основную функцию. {{ 1}} Но я хочу избежать такой ручной загрузки классов. Я хочу просто добавить новые реализации IProduct
, не обновляя другие части (например, SomeFactory
или Основные
методы и т. Д.).
Но мне интересно, можно ли автоматически загружать некоторые классы (например, отмеченные аннотацией)?
P.S Я хочу отметить, что никакие другие классы не будут добавлены во время выполнения, все реализации IProduct
известны до компиляции.
UPD # 1
Спасибо за ответ!
Но можно ли создать автоматически созданный файл свойств с экземплярами IProduct
? {{1} } Я имею в виду, можно ли создать сценарий времени сборки (например, для maven), который генерирует файл свойств или код загрузчика? Существуют ли такие решения или фреймворки?
UPD # 2 Я закончил использовать Библиотеку отражений , которая предоставляет информацию о времени выполнения, путем сканирования пути к классам при запуске.