天天看點

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

Dart入門系列:

Flutter開發Dart極速入門 (基本類型)

Flutter開發Dart極速入門 (變量)

Flutter開發Dart極速入門 (函數)

Flutter開發Dart極速入門 (操作符與流程控制語句)

Flutter開發Dart極速入門 (異常)

Flutter開發Dart極速入門 (類和對象)

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

Flutter開發Dart極速入門 (Dart異步詳解)

Flutter開發Dart極速入門 (生成器)

Flutter開發Dart極速入門 (庫的使用)

Flutter插件化開發注意事項(Packages與插件化開發)

Flutter在Android原生工程中的內建

文章目錄

  • 泛型
    • 與Java中泛型的差別
    • 泛型函數
    • 泛型構造函數
    • 泛型限制

泛型

與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);
}