16

可以将类类型作为变量传递给 Dart 吗?

我正在尝试执行以下操作:

class Dodo
{
  void hello() {
    print("hello dodo");
  }
}

void main() {

var a = Dodo;
var b = new a();
b.hello();

}

在 python 中类似的代码可以正常工作。new a()在 Dart 中,我在抱怨a不是类型时遇到错误。

是否可以将类对象用作变量?如果没有,推荐的解决方法是什么?

4

3 回答 3

25

另一种方法是传递闭包而不是类。然后你可以避免使用镜子。例如

a = () => new Dodo();
...
var dodo = a();
于 2014-04-16T15:00:13.657 回答
7

您可以使用镜像 api:

import 'dart:mirrors';

class Dodo {
  void hello() {
    print("hello dodo");
  }
}

void main() {
  var dodo = reflectClass(Dodo);

  var b = dodo.newInstance(new Symbol(''), []).reflectee;
  b.hello();
}

也许它可以写得更紧凑,尤其是new Symbol('') 表达式。

于 2014-04-15T22:49:03.277 回答
-1

你可以做的是:

const dynamic a = Dodo; // or dynamic a = Dodo;
var b = new a();
b.hello();

这对我来说很好;请享用!

于 2021-06-26T18:54:50.897 回答