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 に答える