Добавить в корзинуПозвонить
Найти в Дзене
Java

Java-ошибка, которую лучше ловить на компиляции, а не в проде

В Java @Override - это не украшение над методом, а простая защита от глупых ошибок. Представь базовый класс: class Report { void print() { // ... } } Ты хочешь переопределить метод, но случайно пишешь prnt() вместо print(): class PDFReport extends Report { void prnt() { // ... } } Код скомпилируется. Но метод print() не переопределён. Ты просто создал новый метод с опечаткой, а старое поведение осталось на месте. А теперь добавляем @Override: class PDFReport extends Report { @Override void prnt() { // ... } } И компилятор сразу скажет: такого метода в родительском классе нет, переопределять нечего. Вот почему @Override стоит писать всегда, когда переопределяешь метод. Это маленькая аннотация, которая превращает скрытый баг в обычную ошибку компиляции.

Java-ошибка, которую лучше ловить на компиляции, а не в проде

В Java @Override - это не украшение над методом, а простая защита от глупых ошибок.

Представь базовый класс:

class Report {

void print() {

// ...

}

}

Ты хочешь переопределить метод, но случайно пишешь prnt() вместо print():

class PDFReport extends Report {

void prnt() {

// ...

}

}

Код скомпилируется. Но метод print() не переопределён. Ты просто создал новый метод с опечаткой, а старое поведение осталось на месте.

А теперь добавляем @Override:

class PDFReport extends Report {

@Override

void prnt() {

// ...

}

}

И компилятор сразу скажет: такого метода в родительском классе нет, переопределять нечего.

Вот почему @Override стоит писать всегда, когда переопределяешь метод. Это маленькая аннотация, которая превращает скрытый баг в обычную ошибку компиляции.