Лекция 3. Java Blitz (Часть 2)

Что такое generics и чем они важны? Можно ли читать байткод? Как работает препроцессор и аннотации? А также о том, нужна ли рефлексия в продакшене, как не наступать на простые грабли и как выглядит контрактное программирование в Java.