Должны ли мы @Override реализации метода интерфейса?

Я не совсем уверен, почему он нужен в заголовке, но есть API JetGetDatabaseFileInfo, если вы не подключили базу данных: https://docs.microsoft.com/ ru-us / windows / desktop / extensible-storage-engine / jetgetdatabasefileinfo-function

Существует также JetGetDatabaseInfo, если вы уже подключили его. Вас интересует размер файла? Или количество страниц, которое движок считает (JET_DbInfoSpaceOwned)?

414
задан Community 23 May 2017 в 02:03
поделиться

7 ответов

Необходимо использовать @Override, когда это возможно. Это препятствует простым ошибкам быть сделанным. Пример:

class C {
    @Override
    public boolean equals(SomeClass obj){
        // code ...
    }
}

Это не компилирует, потому что это правильно не переопределяет public boolean equals(Object obj).

То же пойдет для методов, которые реализуют интерфейс (1.6 и выше только) или переопределяют метод Суперкласса.

291
ответ дан 22 November 2019 в 23:28
поделиться

Для меня часто времена это - единственная причина, которую некоторый код требует, чтобы Java 6 скомпилировал. Не уверенный, если это стоит того.

2
ответ дан 22 November 2019 в 23:28
поделиться

Я полагаю, что javac поведение изменилось - с 1,5 оно запретило аннотацию, с 1,6 оно не делает. Аннотация обеспечивает дополнительную проверку времени компиляции, поэтому если бы Вы используете 1.6, я пошел бы для нее.

102
ответ дан 22 November 2019 в 23:28
поделиться

Я использовал бы его в каждой возможности. Посмотрите при использовании @Override аннотации Java и почему?

16
ответ дан 22 November 2019 в 23:28
поделиться

Переопределение Ваших собственных методов, наследованных от Ваших собственных классов, не будет обычно повреждаться на рефакторингах с помощью язя. Но если Вы переопределяете метод, наследованный от библиотеки, рекомендуется использовать его. Если Вы не сделаете, то Вы не будете часто получать ошибки на более позднем изменении библиотеки, но хорошо скрытой ошибки.

3
ответ дан 22 November 2019 в 23:28
поделиться

Сам Eclipse добавит @Override аннотация, когда Вы говорите этому "генерировать нереализованные методы" во время создания класса, который реализует интерфейс.

1
ответ дан 22 November 2019 в 23:28
поделиться

JDK 5.0 не позволяет использовать аннотацию @Override , если вы реализуете метод, объявленный в интерфейсе (его ошибка компиляции), но JDK 6.0 позволяет это. Так что, возможно, вы можете настроить предпочтения вашего проекта в соответствии с вашими требованиями.

11
ответ дан 22 November 2019 в 23:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: