Spec-Zone.ru › Dart 2

dart:mirrors

Свойство override

dynamic override
final

Список имён библиотек или «*».

При использовании в качестве метаданных для импорта «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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API