函数名和类名后面的泛型来控制整体的泛型
定义了泛型可以不指定泛型的类型,这样就变成了可以传递任意值
泛型类/接口才能继承/实现泛型类/接口
泛型的T字母可以是任意字母
方法:
T 函数名<T>(T 参数)
{
T f()
{
..
}
}
调用:函数名<指定的类型>(xx);
类:
class 类名<T>{
T f(){...}
}
接口/抽象函数:
abstract class 接口名/抽象函数名<T>{
...
}
调用:类名 x =new 类型<指定类型>();
代码示例:
void main(){
var map =new Map();
map['x']=1;
List a=[1,2,3];
//设置返回类型和传入类型校验
T get<T>(T value){
print(value);
}
//只对传入类型校验
get2<T>(T value)
{
print(value);
}
//函数名后的泛型,将控制整个函数的泛型
get3<T>(int value)
{
List list=new List<T>();
list.add(value);
}
List list=new List<String>();
get<String>('123');
//不指定类型可以当普通方法用
get(2);
P p =new P<String>();
p.add('2');
}
class P<T>{
List list=new List<T>();
void add(T value)
{
this.list.add(value);
}
void prin()
{
for(var i in this.list)
{
print(i);
}
}
}
class K<T> extends P<T>{
}