您不能在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);
}