當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。