Пишу тут на Жабе новое 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)