当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart Object.noSuchMethod用法及代码示例


dart:core 库中Object.noSuchMethod 方法的用法介绍如下。

用法:

dynamic noSuchMethod(
   Invocation invocation   
)

在访问不存在的方法或属性时调用。

动态成员调用可以尝试调用接收对象上不存在的成员。例子:

dynamic object = 1;
object.add(42); // Statically allowed, run-time error

此无效代码将调用整数1noSuchMethod 方法,其中Invocation 表示.add(42) 调用和参数(然后抛出)。

类可以覆盖 noSuchMethod 以为此类无效动态调用提供自定义行为。

具有非默认 noSuchMethod 调用的类也可以省略其接口成员的实现。例子:

class MockList<T> implements List<T> {
  noSuchMethod(Invocation invocation) {
    log(invocation);
    super.noSuchMethod(invocation); // Will throw.
  }
}
void main() {
  MockList().add(42);
}

即使MockList 类没有任何List 接口方法的具体实现,此代码也没有编译时警告或错误。对 List 方法的调用被转发到 noSuchMethod ,因此此代码将 log 调用类似于 Invocation.method(#add, [42]) 然后抛出。

如果从 noSuchMethod 返回一个值,它将成为原始调用的结果。如果值不是原始调用可以返回的类型,则调用时会发生类型错误。

默认行为是抛出 NoSuchMethodError

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 noSuchMethod method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。