您无法在 Dart 中实例化泛型类型,也无法在 Flutter 中使用镜像。但是,您可以类型映射到闭包中的构造函数。
在处理手写类时,这对于 JSON 序列化之类的东西可能很有用,特别是当数据源以多种形式返回相同的数据形状时,即Future<T>
或Stream<T>
.
问题:这是一种有效的模式吗?有任何潜在的缺点吗?更好的选择?
class Dog{}
class Cat{}
Map models = {
Dog: () => Dog(),
Cat: () => Cat()
};
class Database<T> {
T data;
Database() {
data = models[T](); // <-- this feels a bit weird, but works
}
}
void main() {
Database<Cat> cat = Database();
print(cat.data is Cat);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
974 次 |
最近记录: |