从泛型约束 Dart 调用静态方法



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

此外,我应用了一个 Type 约束,以便仅操作其父类中的对象。

以下是我想要实现的目标的简短示例:

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>();
}

不,这是不可能的。

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

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

最新更新