Class Dart-获取类的当前类型

Class Dart-获取类的当前类型,class,dart,extends,Class,Dart,Extends,我想创建一个类并引用“当前类的类型” 例如,在这个小片段中,我创建了一个类a,它具有.child 正如所写的那样,.child(A?)的类型是“硬编码的”,我的意思是,如果我创建扩展A,。child的类型将是A?。我希望它自动成为B?“因为当前类是B” A类{ 孩子; } B类扩展了A类{ } Bf(B){ 返回b.child; } 正如现在一样,它显示了错误 line 10 • A value of type 'A?' can't be returned from the function

我想创建一个类并引用“当前类的类型”

例如,在这个小片段中,我创建了一个类
a
,它具有
.child

正如所写的那样,
.child
A?
)的类型是“硬编码的”,我的意思是,如果我创建扩展
A
。child
的类型将是
A?
。我希望它自动成为
B?
“因为当前类是
B

A类{
孩子;
}
B类扩展了A类{
}
Bf(B){
返回b.child;
}
正如现在一样,它显示了错误

line 10 • A value of type 'A?' can't be returned from the function 'f' because it has a return type of 'B?'. 


有没有办法做我想做的事?如果是,如何?

< P>一种方法是使用泛型并从C++中借用,以便基类知道派生类的类型:

A类{
衍生儿童;
}
B类扩展了A类{
}
或者,您可以使
A
成为一个抽象类,并使
B
覆盖
子类

抽象类A{
一个孩子;
}
B类扩展了A类{
@凌驾
B?儿童;
}
如果
A
需要
child
的setter,您可以使用
协变
来平息静态分析,并允许在运行时检查setter的值:

抽象类A{
一个孩子;
设置子项(A?值);
}
B类扩展了A类{
@凌驾
协变B?child;
}