Почему я вижу импорт ломбоков в декомпилированном классе
Когда я открываю и декомпилирую класс из 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 являются просто синтаксическим сахаром. Они помогают в написании кода, потому что вам не нужно постоянно писать полные имена классов. Но они не превращают это в байт-код. Вы можете видеть их как своего рода директиву компилятора.
Таким образом, если вы видите операторы импорта в декомпилированном коде, но в коде нет фактического использования этого импорта, вполне вероятно, что это вызвано декомпилятором.