美文网首页
7. Dart - 泛型

7. Dart - 泛型

作者: Aliv丶Zz | 来源:发表于2021-03-09 09:43 被阅读0次

    1. 泛型方法

    泛型方法的定义:

     T getValue<T>(T v) {
        return v;
      }
    

    第一个T,表示方法返回类型
    第二个T,表示声明的泛型类型
    第三个T,表示方法入参类型
    ps: 字母 T 可用其他字母替换,但是实际开发中常用T来表示。

    示例代码:

    main() {
      T getValue<T>(T v) {
        return v;
      }
    
      print(getValue(1234));//1234
      print(getValue('HelloWorld'));//HelloWorld
    
    }
    

    如下方式即表明泛型类型为String,则此时只能传入String类型

      var v1 = getValue<String>('vvvvv');
      print(v1);//vvvvv
    

    2. 泛型类

    class PrintClass<T> {
      List list = new List<T>();
    }
    
    
    main() {
    
      PrintClass pc1 = PrintClass();
      pc1.list.add(123);
      pc1.list.add('hello');
    
      PrintClass pc2 = PrintClass<String>();
      pc2.list.add('123');
    
    }
    

    pc1 未指定泛型类型,则pc1.list可以增加任意类型。
    pc2 被指定为String类型,则pc2.list只能添加String类型

    3. 泛型接口

    abstract class ObjectCache {
      getByKey(String key);
      void setByKey(String key, Object value);
    }
    
    abstract class StringCache {
      getByKey(String key);
      void setByKey(String key, String value);
    }
    

    以上两个接口可简写为:

    abstract class Cache<T> {
      getByKey(String key);
      void setByKey(String key, T value);
    }
    

    相关文章

      网友评论

          本文标题:7. Dart - 泛型

          本文链接:https://www.haomeiwen.com/subject/ngnpqltx.html