如何在Dart中专门化(重写)类字段?

如何在Dart中专门化(重写)类字段?,dart,dart-sdk,Dart,Dart Sdk,我想在Dart 2中扩展或实现类时专门化字段(覆盖) 参见代码: abstract class Abase { String id; List<Bbase> bbases; } abstract class Bbase { String id; } class A implements Abase { String id; String name; List<B> bbases; // 'A.bbases=' ('(List<B>

我想在Dart 2中扩展或实现
类时专门化字段(覆盖)

参见代码:

abstract class Abase {
  String id;
  List<Bbase> bbases;
}

abstract class Bbase {
  String id;
}

class A implements Abase {
  String id;
  String name;

  List<B> bbases; // 'A.bbases=' ('(List<B>) → void') isn't a valid override of 'Abase.bbases=' ('(List<Bbase>) → void').
}

class B implements Bbase {
  String id;
}
抽象类数据库{
字符串id;
名单b;
}
抽象类Bbase{
字符串id;
}
A类实现Abase{
字符串id;
字符串名;
列出b类;/'A.b类='('(列表)→ void')不是对'Abase.bbases='('(列表)的有效重写→ 无效”)。
}
类实现Bbase{
字符串id;
}
class-Abase
具有通用字段
List-bbase
,在
class-A
中,我想用
List-bbase
专门化此字段

但这是不可能的。此错误出现在
分析器
构建运行程序
上:

“A.bbases=”(”(列表)→ void')不是的有效重写 'Abase.bbases='('(列表)→ 无效”)

  • 有没有理由不接受这种专业化的领域
  • 是否有其他方法专门化
    扩展上的字段
    实现

  • 您必须使用泛型:

    abstract class Abase<T extends Bbase> {
      String id;
      List<T> bbases;
    }
    
    abstract class Bbase {
      String id;
    }
    
    class A implements Abase<B> {
      String id;
      String name;
    
      List<B> bbases;
    }
    
    class B implements Bbase {
      String id;
    }
    
    抽象类数据库{
    字符串id;
    名单b;
    }
    抽象类Bbase{
    字符串id;
    }
    A类实现Abase{
    字符串id;
    字符串名;
    名单b;
    }
    类实现Bbase{
    字符串id;
    }
    
    您可以使用泛型,但我发现您的代码太混乱,无法进行实际实现。类似于
    抽象类Abase{String id;List bbase;}
    类A实现Abase{
    泛型的方法就是这样。太好了!太好了,这就是我想要的。