扩展List <T>类

Jvd*_*erg 6 dart

是否可以使用我自己的特定列表扩展通用列表.就像是:

class Tweets<Tweet> extends List<T>
Run Code Online (Sandbox Code Playgroud)

如果我想用自己的构造函数构造,构造函数将如何显示:

Datasource datasource = new Datasource('http://search.twitter.com/search.json');
Tweets tweets = new Tweets<Tweet>(datasource);
Run Code Online (Sandbox Code Playgroud)

那么如何调用父构造函数,因为这不是在扩展类中完成的?

Kai*_*ren 1

DartList是一个带有工厂的抽象类。

我认为你可以这样实现:

class Tweet {
  String message;

  Tweet(this.message);
}

class Tweets<Tweet> implements List<Tweet> {
  List<Tweet> _list;

  Tweets() : _list = new List<Tweet>();

  add(Tweet t) => _list.add(t);
  addAll(Collection<Tweet> tweets) => _list.addAll(tweets);
  String toString() => _list.toString();
}


main() {
  var t = new Tweet('hey');
  var t2 = new Tweet('hey');

  var tl = new Tweets();
  tl.addAll([t, t2]);

  print(tl);
}
Run Code Online (Sandbox Code Playgroud)

似乎没有任何直接的方法可以做到这一点,并且看起来还有一个错误票:http://code.google.com/p/dart/issues/detail ?id=2600

更新:一种方法是使用noSuchMethod()和转接呼叫。