Class 如何在dart颤振中从单个泛型类返回多种类型的类类型?

Class 如何在dart颤振中从单个泛型类返回多种类型的类类型?,class,flutter,dart,return,Class,Flutter,Dart,Return,我有多个这样的类:- Class A { static int xyz = 10; int c; int d; static A getData() { // Do something return A()..c = xyz*5; } Class B { static int abc = 10; int c; static B getData() { // Do something return B()..c = xyz*5; }

我有多个这样的类:-

Class A {
  static int xyz = 10;
  int c;
  int d;
  static A getData() {
   // Do something
    return A()..c = xyz*5;
  }

Class B {
  static int abc = 10;
  int c;
  static B getData() {
   // Do something
    return B()..c = xyz*5;
  }
因此,在这里您可以看到
getData()
正在做同样的事情,但是有不同的返回类型。
有没有办法避免类似这样的重复实现,可以通过定义一个可以引用类并具有多个返回类型的函数来实现吗?

这有两个部分:创建对象和分配给对象的字段

创建对象时,大部分情况下都是运气不佳。在通用方法中创建特定类型对象的唯一方法是通过
dart:mirrors
使用反射。但是,您已经指出这是针对颤振项目的,颤振不支持反射,因此这不是一个选项。动态创建对象的唯一方法是传入一个工厂方法,泛型方法可以调用该工厂方法来构造对象

分配给对象的字段更容易,但这需要通过使用
dynamic
或通过将类与继承绑定在一起来丢失静态类型检查。后者是更好的选择,但如果您使用的是库,那么它并不总是一个选项

结合这两件事,代码将如下所示:

class-Foo{
静态int xyz=10;
INTC;
}
A类扩展了Foo{
int d;
静态的getData(){
返回modifyObject(()=>A());
}
}
B类扩展了Foo{
静态B getData(){
返回modifyObject(()=>B());
}
}
T modifyObject(T create()){
返回create()…c=Foo.xyz*5;
}

在做这件事之前,我会先看看你的项目是否真的需要它。如果您的用例像您的示例一样简单,我会认为这种级别的泛化是过分的,您对代码可读性的伤害大于对其模块化的帮助。

如果不使用
Dart:mirrors
,您无法在Dart中动态创建泛型对象,而颤振明确地消除了对这一点的支持。赋值可以通过使用继承和泛型类型约束或使用
动态
来完成,但构造必须单独完成(通过传入已构造的对象或传入工厂方法)你能举一个使用继承或镜像的例子吗?我会有10个这样的类,然后也许我会使用这个,谢谢