Flutter開發Dart極速入門 (泛型)

泛型

與Java中泛型的區別

  • Java中泛型是編譯時的, 泛型信息在運行中是不存在的

  • Dart中的泛型是固定化的, 在運行時候也有可以判斷的具體類型

    main() {
      var list = List<String>();
      list.add('sdsds');
      print('${list.runtimeType}, ${list is List<String>}');	// print: List<String>, true
    }
    

泛型函數

main() {
  var t = method1('t', 123234);
  print('t: $t');
}

// 泛型函數
T method1<T, K>(T t, K k) {
  print('t: $t, k: $k');
  return t;
}

泛型構造函數

main() {
  var clazzN = Name<String>('Elvis');
  print('${clazzN.name}');
}
// 泛型構造函數
class Name<T> {
  T name;

  Name(this.name);
}

泛型限制

main() {
  var aFeature = AnimalFeature(Actions());
  aFeature.act.doSth();
}

class Actions{
  void doSth() {
    print('蹦蹦跳跳');
  }
}

// 泛型限制
class AnimalFeature<T extends Actions> {
  T act;
  AnimalFeature(this.act);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章