Комментарии 6
Lombok не манипулирует байткодом. Библиотека выступает процессором аннотаций, который на соответствующем шаге вызывает компилятор для генерации обычного java-кода.
А как же @SneakyThrows?
А что с ним? Это просто генерация try-catch вокруг тела аннотированного метода.
Да, sneaky throws основан на такой фишке JVM, что когда мы бросаем generic exception (который может быть как checked, так и unchecked) — JVM не вправе рассматривать exception как checked во всех случаях, т.к. exception можеть быть unchecked.
По сути работает такая конструкция:
static <E extends Exception> void throwQuietly(Exception e) throws E {
throw (E) e;
}
Использовать можно так:
try {
smth that throws checked exception
} catch(Exception e) {
throwQuietly(e);
}
В случае экспешена он будет выброшен, но обрабатывать его не нужно, даже если он checked.
Подозреваю, что вы хотели рассказать это хабраюзеру MEJIOMAH Я исходный код ломбока видел, знаю, что он генерирует.
Если мне не изменяет логика, то в части с кодом Person есть маленькая очепятка в конструкторе. Там должно быть
this.age = age;
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Java 15 глазами программиста Scala