Пишу тут на Жабе новое API с использованием Guice, и закралась мысль: а почему бы не сделать это на уровне языка? Что-нибудь типа: public class Foo expects List<String>, Calendar { public void bar() { List<String> list = inject List<String>(); for(int i = 0; i < 5; i++) { Calendar cal = inject Calendar(); cal.add(Calendar.MONTH, -5); list.add("Date " + i + " months ago: " + cal); } ... } } public injector MyInjector { List<String> = ArrayList<String>, Calendar = GregorianCalendar, ... @Singleton AbstractFooService = DefaultFooService } public static void main(String[] args) { CoreObject obj = new(MyInjector, OtherInjector) CoreObject(); Foo foo = obj.getBar().getFoo(); ... } В чём плюсы: - Большинство аннотаций заменится конструкциями языка; можно оставить аннотации для поведения "не по умолчанию" - Отпадёт необходимость в извращениях с синтаксисом, типа (пример реальный) binder.bind(new TypeLiteral<Map<String, Integer>>() {}).to(new TypeLiteral<HashMap<String, Integer>>() {}); - Многое можно будет проверить на этапе компиляции
Ответ на:
комментарий
от gaa
Ответ на:
комментарий
от Sikon
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Java Dependency Injection (JSR-330) с Google Guice (2013)
- Форум Java, массивы — почему здесь нет ошибки? (2012)
- Форум Как прикрутить SQL-модель данных к TableView? (2014)
- Форум Парсер на Java не парсит все что требуется (2017)
- Форум DSL для сохранения java-объектов (2010)
- Форум [Sugar for coffie]Сахарок для java (2010)
- Форум Как создать DI-аннотацию, использующую строковые параметры? (2015)
- Форум Named entity graph сразу для двух списков портит данные (2018)
- Форум spring security + hibernate + rest (2014)
- Форум Dependency Injection (2015)