yutopp's blog

サンドバッグになりたい

型パラメータのインスタンスの生成

Dart 0.07 では型パラメータからインスタンスを生成することは出来ません。(型変数に対してnew・constは使うことが出来ない。)

class hoge<T>
{
  T create() => new T();  // new T()は出来ない。
}

class foo
{
  foo() { print("foo!!"); }
}

main() {
  final a = new hoge<foo>();
  a.create();
}

その対処策としてこのようなものが紹介されていました。

class hoge<T>
{
  hoge( this._creator );

  T create() => _creator();
  final _creator;
}

class foo
{
  foo() { print("foo!!"); }
}

main() {
  final a = new hoge<foo>( () => new foo() );
  a.create();
}

https://groups.google.com/a/dartlang.org/group/misc/browse_thread/thread/1c9d23fcc8480be2#