Почему @Override необходимо в Java или Android?

В java или Android есть аннотации @Override. Что это значит? Я обнаружил, что он используется, когда метод является методом подкласса или унаследованного интерфейса, я хочу знать дальше, а другой – @SuppressWarnings, это также Anonation, если да, сколько аннотаций используется java и для какой цели.

Solutions Collecting From Web of "Почему @Override необходимо в Java или Android?"

На этот вопрос также дан ответ здесь и довольно лаконично: использование Android @Override

Это аннотация, которую вы можете использовать, чтобы сообщить компилятору и вашей среде IDE, что вы намереваетесь использовать метод, который имеет эту аннотацию, для переопределения метода суперкласса. У них есть предупреждения / ошибки, если вы ошибаетесь, например, если вы намерены переопределить метод, но не заметите его, если в аннотации есть IDE или компилятор скажет вам, что это на самом деле не отменяет метод суперкласса и, следовательно, Вы можете определить причину и исправить орфографию.

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

Другими словами, если вы добавите @Override, это поможет вам убедиться, что вы действительно переопределяете существующий метод! Довольно чертовски полезно.

Переопределение означает, что вы меняете поведение метода, унаследованного от родительского класса, без изменения подписи. Аннотирование @Override используется для отметки этого. Он сильно связан с концепцией полиморфизма. Пример:

public class A { public void foo() { System.out.println("A"); } } public class B extends A { @Override public void foo() { // I want to change the way foo behaves System.out.println("B"); // I want to print B instead of A } } public static void main(String[] args) { A a = new A(); a.foo(); // prints A A b = new B(); // I can use type B because it extends A b.foo(); // I have overriden foo so it prints B now } 

Просто чтобы убедиться, что вы на самом деле переопределяете его во время компиляции и улучшаете читаемость

Пример :

 class Animal{ public void eat(Food food){ } } class Person extends Animal { @Override public void eat(String food){ } } 

Это даст вам ошибку времени компиляции, поскольку вы на самом деле не переопределяете ее (см. Тип питания)

@override его аннотация, т.е. метаданные, введенные в jdk 1.6. Если вы не напишете его перед методом переопределения, это не будет иметь никакого значения, но просто будет использоваться для повышения удобочитаемости компилятора.

Чтобы отметить, что вы действительно реализуете или меняете метод. Подобно этому, он проверяется во время компиляции. Это вы, например, получаете ошибку, если хотите реализовать @Override public void equals(final Car pObject); Вместо @Override public void equals(final Object pObject); ,

Просто отправьте источник для определения обеих аннотаций, помимо других дополнительных деталей: @Override и @SuppressWarnings из спецификаций Java.

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

Два приведенных вами примера рассказывают компилятору дополнительную информацию о коде, который он компилирует. Когда он видит @Override , он проверяет, действительно ли метод переопределяет метод. Когда он видит @SuppressWarnings , он знает, что он должен игнорировать любые предупреждения компилятора данного типа, которые существуют внутри блока кода.

Они также могут использоваться вне компиляторов. Существует несколько библиотек, которые вы аннотируете объект класса, и он использует эти метаданные для создания базы данных или анализа XML-файла.