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

Когда я открываю и декомпилирую класс из [email protected] в IntelliJ, я вижу import lombok.NonNull, но не вижу временной зависимости от ломбока в своем проекте. Теперь это имеет смысл, потому что lombok устанавливается как необязательная зависимость в spring-data-parent. Я так понимаю, ломбок не является рантайм-зависимостью, но почему я тогда его там вижу? Это магия IntelliJ, поддерживающая Lombok при декомпиляции класса?


person lqbweb    schedule 10.01.2019    source источник


Ответы (2)


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

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

person Jan Rieke    schedule 11.01.2019

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

person Carl    schedule 15.01.2019