从通用约束 Dart 调用静态方法

The*_*our 6 generics dart

我正在尝试从我收到的泛型类型调用静态方法。这甚至可能吗?

此外,我应用了类型约束,以便仅从其父类操作对象。

这是我试图实现的一个简短示例:

class A {
  static func() {
    print("A");
  }
}

class B extends A {
  static func() {
    print("B");
  }
}

concret<T extends A>() {
  T.func(); // I expected a print('B')
}

main() {
    concret<B>();
}
Run Code Online (Sandbox Code Playgroud)

lrn*_*lrn 12

不,这是不可能的。

Dart 静态方法调用在编译时解析,因此不可能在仅在运行时具有值的类型变量上调用它们。

如果可以的话,那就完全不安全了。任何人都可以创建一个没有静态成员的类C扩展并调用。由于静态成员不是继承的,因此它必须给您一个运行时错误,并且您无法在编译时检测到该错误。这是不允许的主要原因。Afuncconcret<C>();