6

私自身の特定のリストで一般的なリストを拡張することは可能ですか?何かのようなもの:

class Tweets<Tweet> extends List<T>

そして、私が自分のコンストラクターで構築したい場合、コンストラクターはどのように見えるでしょうか?

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

そして、これは拡張クラスでは行われないので、親コンストラクターを呼び出す方法は?

4

2 に答える 2

1

Dart'sListはファクトリを持つ抽象クラスです。

次のように実装できると思います。

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);
}

これを行う直接的な方法はないようで、バグ チケットもあるようです: http://code.google.com/p/dart/issues/detail?id=2600

更新: 1 つの方法は、noSuchMethod()通話を使用して転送することです。

于 2012-12-13T18:03:01.690 に答える