2013-01-21 108 views
3

我試圖找出如何創建在DART自定義對象的自定義集合,並具有列表作爲一個抽象類,我看不是沒有其他辦法「有」一個列表,我的自定義集合:飛鏢的自定義集合?

class MenuItemCollection { 

    List<MenuItem> _items; 

    MenuItemCollection() { 
    _items = new List<MenuItem>(); 
    } 

    List<MenuItem> get items => _items; 
} 

有沒有更好的方法來做到這一點?

+3

不幸的是沒有辦法尚未擴展列表。以下是星級投票選擇此功能的錯誤:http://code.google.com/p/dart/issues/detail?id=2600 –

+0

Seth,是否意味着無法擴展List被認爲是一個錯誤?我認爲這是通過設計? –

回答

3

你可以這樣做:

class MenuItemCollection implements List<MenuItem> { 
    final _list = new List<MenuItem>(); 
    MenuItemCollection(); 

    noSuchMethod(InvocationMirror invocation) => invocation.invokeOn(_list); 
} 
+2

您也可以使用noSuchMethod來捕捉所有內容並轉發到封裝列表:)類似於EdgeList {} {}} noSuchMethod(mirror)=> mirror.invokeOn(list); } –

+0

謝謝!我已經更新了答案。 –

+0

你測試了嗎?我沒有嘗試它:) –

0

可以使用

列表< E>

隊列< E>

集< E>

或簡單的陣列E[]

最好的方法是使用Collection框架(所以前3個選項)。但是如果你想要的話,你甚至可以製作一個遞歸數組。