Dart:限制扩展通用类

Ceq*_*iel 5 generics extends restrictions dart

这是声明在dart中扩展另一个“泛型类”的“泛型类”的正确方法吗?请注意,泛型参数具有类型限制。

// available types
class BaseType {}
class DerivedType extends BaseType {}

class BaseClass<Type extends BaseType> {
  final Type prop;
  BaseClass(this.prop) {
    // can be either BaseType or DerivedType
    print(prop);
  }
}

class DerivedClass<Type extends BaseType> extends BaseClass<BaseType> {
  DerivedClass(BaseType prop) : super(prop);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码有效,但是我不确定是否使用正确的语法。

Ale*_*uin 9

尽管您的代码是正确的,但我认为您在以下泛型中犯了语义错误DerivedClass

// available types
class BaseType {}
class DerivedType extends BaseType {}

class BaseClass<T extends BaseType> {
  final T prop;
  BaseClass(this.prop) {
    // can be either BaseType or DerivedType
    print(prop);
  }
}

class DerivedClass<T extends BaseType> extends BaseClass<T /*not BaseType*/> {
  DerivedClass(T /*not BaseType*/ prop) : super(prop);
}
Run Code Online (Sandbox Code Playgroud)