Dart泛型:尝试创建T的实例时,“名称T不是类”

时间:2019-05-03 21:47:07

标签: generics dart

我有一个通用的“容器”,除其他事项外,还需要能够创建其“类型参数”的实例:

class Item { }

class BaseContainer<T extends Item> {
  T makeNew() {
    return new T() as T; // compile-time error
  }
}

但是,这会在new T()附近导致编译时错误:“名称'T'不是类。请尝试更正名称以匹配现有的类”。

为了进行比较,在子类内部定义方法可以正常工作,因为在这种情况下我可以避免使用type参数:

class Container extends BaseContainer<Item> {
  Item makeNew() {
    return new Item(); // works correctly
  }
}

但这是次优的,因为我需要在BaseContainer的每个子类中定义此方法。

在泛型超类中是否可以使用“泛型” makeNew方法?

0 个答案:

没有答案