Я понимаю определение аннотации @override.Почему добавлена аннотация @override?
Но почему использование аннотации необязательно?
Я понимаю определение аннотации @override.Почему добавлена аннотация @override?
Но почему использование аннотации необязательно?
Аннотации не были частью языка, потому что разработчики языка не хотели применять его.
Он добавлен в качестве дополнительной аннотации для тех, кто хочет эту функцию, но это признается только инструментом анализатора, но на самом деле это не часть языка.
От documentation:
Намерение @Override обозначений, чтобы поймать ситуации, когда суперкласс переименовывает элемент, и независимый подкласс, который используется для переопределения элемента, может тихо продолжить работу с использованием суперкласса реализация.
Возможно, вы захотите назвать свой метод равным суперклассу, не переопределяя его. Это разрешено, так как оно не нарушает никаких ограничений. В принципе вы можете назвать свои методы тем, что хотите.
@Override
только гарантирует, что у одного из ваших родителей должен быть метод с той же подписью.
Спасибо! После кучи поиска это первый раз, когда я нашел объяснение, которое действительно помогло! (по-видимому, я заглянул в него, когда прочитал официальные документы) – KOGI
Вы можете включить правило ЛИНТЕР для обеспечения его
путем добавления .analysis_options
файл в проект, кроме файла pubspec.yaml
с этим содержанием
linter:
rules:
- annotate_overrides
Итак ... они сделали это необязательным, потому что они не хотели, чтобы это требовалось? Я уверен, что это было не так, но это кажется особенно бесполезным. – KOGI
Это было сделано необязательно, потому что они не хотели, чтобы он был частью языка. Дарт не требует от вас ничего писать, чтобы переопределить метод. Так что действительно, это не * необязательно *, это * не существует вообще * с точки зрения языка. Некоторые люди хотят эту функцию, даже если язык ее не имеет, и они добавили поддержку аннотации и анализатора '@ override'. Аннотации должны действительно быть в пакете meta с другими признанными анализаторами аннотациями вместо того, чтобы быть в библиотеках платформы, и, возможно, мы в конечном итоге переместим его там. – lrn