РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
124 of 723 menu

Метод noSuchMethod

Метод noSuchMethod класса Object вызывается автоматически, когда происходит обращение к несуществующему методу или свойству объекта. В первый параметр мы передаем объект Invocation, который содержит информацию о вызванном методе: его имя, позиционные и именованные аргументы. По умолчанию метод выбрасывает исключение NoSuchMethodError. Переопределив его, можно изменить поведение объекта при обращении к отсутствующим членам.

Синтаксис

dynamic noSuchMethod(Invocation invocation)

Пример

Давайте переопределим метод noSuchMethod в классе и посмотрим, что произойдет при обращении к несуществующему методу:

class MyClass { @override dynamic noSuchMethod(Invocation invocation) { print('Method not found: ${invocation.memberName}'); return null; } } void main() { MyClass obj = MyClass(); obj.unknownMethod(); }

Результат выполнения кода:

"Method not found: Symbol(\"unknownMethod\")"

Пример

Давайте получим информацию об аргументах, переданных в несуществующий метод:

class MyClass { @override dynamic noSuchMethod(Invocation invocation) { print('Name: ${invocation.memberName}'); print('Positional: ${invocation.positionalArguments}'); print('Named: ${invocation.namedArguments}'); return null; } } void main() { MyClass obj = MyClass(); obj.unknownMethod(1, 2, name: 'abcde'); }

Результат выполнения кода:

"Name: Symbol(\"unknownMethod\")" "Positional: [1, 2]" "Named: {Symbol(\"name\"): abcde}"

Пример

Давайте переопределим метод noSuchMethod так, чтобы он возвращал значение по умолчанию вместо выброса исключения:

class MyClass { @override dynamic noSuchMethod(Invocation invocation) { return 'default'; } } void main() { MyClass obj = MyClass(); dynamic res = obj.unknownMethod(); print(res); }

Результат выполнения кода:

"default"

Смотрите также

  • класс Object,
    который является базовым классом для всех объектов
  • метод toString,
    который возвращает строковое представление объекта
  • свойство runtimeType,
    которое возвращает тип объекта во время выполнения
  • ключевое слово operator,
    которое позволяет переопределять операторы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить