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