5

同じ基本型のオブジェクトが多数あります。それらを作成するための汎用関数を作成したいと思います。コードサンプル:

class Grid extends Display { ....
class Start extends Display { ....

class MainClass {
  Grid grid;
  Start start;
  ....
}

これの代わりに MainClass メソッドで:

start = new Start();
start.load(PATH);

grid = new Grid();
grid.load(PATH);

.... 

私はこのようなことをしたいと思います:

void _newDisplay(dynamicType, Display display) {
  display = new dynamicType();
  display.load(PATH);        
}

_newDisplay(Start, start);
_newDisplay(Grid, grid);

....

http://www.dartlang.org/articles/optional-types/を読みましたが、欲しいものが正確に見つかりませんでした。

文字列からクラスをインスタンス化するも見つかりましたが、次のようなコメントがあります。この「ミラー」ソリューションは、動的インスタンス化に使用できる唯一のソリューションですか?

4

1 に答える 1

6

Dart は、これを行う直接的な方法をサポートしていません。通常、型をインスタンス化するクロージャを提供することで、これを回避します。

void _newDisplay(dynamicType, Display display) {
  display = dynamicType();
  display.load(PATH);        
}

_newDisplay(() => Start(), start);
_newDisplay(() => Grid(), grid);

ダーツの静的型付けセマンティクスの欠如に対するいくつかの良い回避策は何ですか?も参照してください。

于 2013-05-10T19:51:14.930 に答える