2013-04-15 14 views
1

我試圖從延伸Map是這樣的:如果這樣做的,我得到了一個錯誤鏢從地圖擴展產生一個錯誤,在地圖默認的構造函數不生成

class TestClass extends Map { 
} 

Constructor '<default>' in class 'Map<dynamic, dynamic>' is not generative.

不知道該怎麼做,我補充說:TestClass() : super();

我仍然有同樣的錯誤。

額外的問題:

哪一個是最好的方法,通過擴展Map像上面或使具有Map這樣的特性的新類:

class TestClass { 
    Map attr; 
} 
+0

你有沒有試過擴展Map的具體子類? 'class Testclass extends HashMap ' – DrColossos

+0

擴展'HashMap'時我沒有錯誤,看起來沒問題,但是'Map'和'HashMap'之間有什麼不同? –

回答

1

地圖是一個抽象類(請參閱:http://api.dartlang.org/docs/releases/latest/dart_core/Map.html)與工廠(查看源代碼)創建默認的HashMap實現。

(你可以看到大多數的這個自己從編輯:右擊「地圖」,並選擇「打開宣言」)

簡單地調用一個錯誤的結果工廠的HashMap左右不是你的類的子類。

但我認爲簡單地繼承HashMap會給你你想要的,因爲無論如何這是默認的實現。

對於您的額外問題:子類化hashmap通常是一種反模式(至少在Java中,如果有關於Dart的更多信息,請更正我的意見),而且您很少想做什麼,特別是如果包容工作。我建議。

相關問題