dart:core
库中Object.noSuchMethod
方法的用法介绍如下。
用法:
dynamic noSuchMethod(
Invocation invocation
)
在访问不存在的方法或属性时调用。
动态成员调用可以尝试调用接收对象上不存在的成员。例子:
dynamic object = 1;
object.add(42); // Statically allowed, run-time error
此无效代码将调用整数1
的noSuchMethod
方法,其中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 Object.hashAllUnordered用法及代码示例
- Dart Object.hashAll用法及代码示例
- Dart Object.hash用法及代码示例
- Dart ObjectStore.openCursor用法及代码示例
- Dart ObjectMirror.delegate用法及代码示例
- Dart MapMixin.containsKey用法及代码示例
- Dart Iterator用法及代码示例
- Dart AttributeClassSet.intersection用法及代码示例
- Dart num.sign用法及代码示例
- Dart TransformList.last用法及代码示例
- Dart FileList.first用法及代码示例
- Dart CanvasRenderingContext2D.drawImageScaledFromSource用法及代码示例
- Dart FileList.length用法及代码示例
- Dart Iterable.takeWhile用法及代码示例
- Dart LinkedHashMap用法及代码示例
- Dart RegExp.pattern用法及代码示例
- Dart StreamTransformer构造函数用法及代码示例
- Dart JsArray.removeAt用法及代码示例
- Dart ListMixin.expand用法及代码示例
- Dart UriData.parse用法及代码示例
- Dart Point用法及代码示例
- Dart Int32x4List.view用法及代码示例
- Dart Uri.decodeFull用法及代码示例
- Dart Future用法及代码示例
- Dart File用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 noSuchMethod method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。