1

我试图从Map这样扩展:

class TestClass extends Map {
}

只是这样做我得到了一个错误Constructor '<default>' in class 'Map<dynamic, dynamic>' is not generative.

不知道怎么办,我补充一下:TestClass() : super();

我仍然遇到同样的错误。

额外的问题:

哪一个是最好的方法,通过Map像上面那样扩展或创建一个具有这样属性的新类Map

class TestClass {
    Map attr;
}
4

2 回答 2

1

Map 是一个抽象类(参见:http ://api.dartlang.org/docs/releases/latest/dart_core/Map.html ),它有一个工厂(查看源代码)创建一个默认的 HashMap 实现。

(您可以自己从编辑器中看到大部分内容:右键单击“地图”并选择“打开声明”)

简单地调用工厂会导致关于 HashMap 不是您的类的子类的错误。

但我认为简单地继承 HashMap 会给你你想要的,因为无论如何这都是默认实现。

对于您的额外问题:子类化哈希图通常是一种反模式(至少在 Java 中,如果 Dart 的某些内容使其更安全,请纠正我)并且很少是您想要做的事情,尤其是在包容有效的情况下。我建议这样做。

于 2013-04-16T21:57:04.940 回答
0

您可以使用类型别名 ( https://medium.com/dartlang/announcing-dart-2-13-c6d547b57067 ) 而不是扩展 Map。

写吧typedef TestClass = Map<String, YourClass>;

于 2022-02-03T08:05:53.050 回答