Свойство override
Список имён библиотек или «*».
При использовании в качестве метаданных для импорта «dart:mirrors», эти метаданные не применяются к библиотеке, в которой используется аннотация, а вместо этого применяются к другим библиотекам (ко всем библиотекам, если используется «*»).
Следующий текст не является нормативным:
Dart2js в настоящее время поддерживает следующие форматы для указания библиотек:
- Постоянный список List, содержащий константы String, представляющие имена библиотек.
- Единственная константа String, значение которой является списком имён библиотек, разделённых запятыми.
По сути, аннотация MirrorsUsed с override имеет тот же эффект, что и размещение аннотации непосредственно на импорте dart:mirrors в каждой из указанных библиотек. Таким образом, если в библиотеке не было аннотации MirrorsUsed раньше, её безусловный импорт dart:mirrors переопределяется аннотированным импортом.
Обратите внимание, что, подобно нескольким явным аннотациям MirrorsUsed, использование override в библиотеке с существующей аннотацией MirrorsUsed является аддитивным. То есть, общее множество целевых объектов рефлексии является объединением целевых объектов рефлексии, возникающих из исходной и переопределяющей аннотаций MirrorsUsed.
Использование override имеет смысл только для библиотек, имеющих импорт dart:mirrors без аннотации, потому что в противном случае оно работало бы точно так же без параметра override.
Хотя аннотация будет применена к указанным целевым библиотекам, символы, цели и метацели всё ещё оцениваются в области действия аннотации. Таким образом, чтобы выбрать цель из библиотеки foo, необходимо использовать квалифицированное имя или, если цель видна в текущей области, её тип может быть указан.
Например, следующий код помечает все цели в библиотеке foo как подлежащие рефлексии, которые имеют аннотацию метаданных, используя класс Reflectable из той же библиотеки.
@MirrorsUsed(metaTargets: "foo.Reflectable", override: "foo")
Однако, следующий код потребовал бы использования класса Reflectable из текущей библиотеки вместо этого.
@MirrorsUsed(metaTargets: "Reflectable", override: "foo")
Реализация
final override;
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-mirrors/MirrorsUsed/override.html