是否可以在构造函数中初始化通用实例变量?

时间:2014-08-10 14:21:54

标签: dart

我今天想知道是否有任何方法可以确保在dart构造时初始化通用实例变量。采用以下基本示例:

class MovingObject<T> {
  T _value;

  MovingObject() {
    // ???: how to init _value here?
  }
}

在C ++中,你可以通过专门化已知类型的构造函数来做到这一点,例如。我可以将float _value设置为0或将Vector3值设置为[0,0,0]。飞镖有可能吗?

1 个答案:

答案 0 :(得分:2)

我想到的一种方式是

class MovingObject<T> {
  T _value;

  MovingObject() {
    // ???: how to init _value here?

    switch(T) {
      case int:
        _value = (5 as T);
        break;
      default:
        ClassMirror x = reflectType(T);
        _value = x.newInstance(new Symbol(''), []).reflectee; // '' for default constructor
        break;
    }
  }
}

class SomeType {
}