Почему я вижу импорт ломбоков в декомпилированном классе

Когда я открываю и декомпилирую класс из spring-data-mongo@2.1.3 в IntelliJ, я вижу import lombok.NonNull, но я не вижу никакой переходной зависимости lombok в моем проекте. Теперь это имеет смысл, потому что lombok устанавливается как необязательная зависимость в spring-data-parent, Как я понимаю, lombok не является зависимостью времени выполнения, но почему я вижу это там тогда? Магия IntelliJ поддерживает Lombok в декомпиляции класса?

2 ответа

Это потому, что spring-data-mongo использует lombok, но они не загрузили исходный zip-файл delombok.

Операторы импорта в Java являются просто синтаксическим сахаром. Они помогают в написании кода, потому что вам не нужно постоянно писать полные имена классов. Но они не превращают это в байт-код. Вы можете видеть их как своего рода директиву компилятора.

Таким образом, если вы видите операторы импорта в декомпилированном коде, но в коде нет фактического использования этого импорта, вполне вероятно, что это вызвано декомпилятором.

Другие вопросы по тегам