学习内容:
关于Dart中的泛型–泛型方法,泛型类,泛型接口
1.泛型:解决类、方法、接口的复用性,以及对不特定数据类型的支持(数据校验)
2.自定义库,系统库,第三方库
- 泛型方法
// 可以将前面的T去掉,则不控制返回值的类型
T getInfo<T>(T value){
return value;
}
void main(){
// 传的参数必须为String类型
// 可以在这里动态指定传入参数的类型以及返回的类型
print(getInfo<String>('110303'));
}
- 泛型类
List 是一个泛型的类,我们可以直接在调用时使用。
// 在这里指定了List里面只能添加String类型的数据
List list = new List<String>;
list.add('hello');
print(list);
下面自定义一个泛型类:
// 使用普通方法定义
class activeDemo{
List list = new List<int>();
void add(int value){
this.list.add(value);
}
void getInfo(){
for(var i=0;i<this.list.length;i++){
print(this.list[i]);
}
}
}
// 使用泛型类
class activeDemo1<T>{
List list = new List<T>();
void add(T value){
this.list.add(value);
}
void getInfo(){
for(var i=0;i<this.list.length;i++){
print(this.list[i]);
}
}
}
void main(){
// 不指定类型
activeDemo1 a = new activeDemo1();
// 指定为string类型
activeDemo1 a1 = new activeDemo1<String>();
a1.add('hello');
a1.getInfo();
}
- 泛型接口
abstract class Animal<T> {
getNume(int num);
void setNum(int num, T value);
}
class Cat<T> implements Animal<T> {
@override
getNume(int num) {
return null;
}
@override
void setNum(int num, T value) {
print("这里有一只小猫 编号为${num},信息为${value}");
}
}
class Dog<T> implements Animal<T> {
@override
getNume(int num) {
return null;
}
@override
void setNum(int num, T value) {
print("这里有一只小狗 编号为${num},信息为${value}");
}
}
void main() {
Cat c = new Cat<String>();
c.setNum(11, "喵喵");
Dog d = new Dog<Map>();
d.setNum(12, {"品种": "Dog", "名字": "小白"});
}
- 库的使用
import "dart:math";
main(){
max(11,12);
}
使用第三方库需要引入,在pubspec.yaml文件中,添加第三方库的依赖,然后再在根目录下运行pub get获取第三方库,然后按照文档中的demo进行使用。
第三方库地址:https://pub.dev/