如何构建具有空安全性的空工厂构造函数?
How to build Null Factory Constructors with Null Safety?
创建静态方法持有者 类 空安全之前的常见 Dart 模式如下:
class MyMethodScope {
/// Prevents instantiation of this class.
factory MyMethodScope._() => null;
static void noop() {}
}
使用 null 安全性 是不可能的,因为工厂构造函数的 return 类型显然不可为 null。
基于https://github.com/dart-lang/language/issues/604,工厂构造器不能再return null,所以你不能这样做。
您也可以只使用 return 非空对象的私有构造函数(无论 factory
与否)。这仍然会阻止 class 在库外被实例化。 (当然,它不会阻止 class 在库中被实例化,但你可以避免这样做,因为你控制着你自己的库。你可以将 class 移动到一个单独的库中,如果您仍然担心意外实例化。)
或者只是将 class 声明为 abstract
,这是防止 class 被实例化的正常且直接的方法。
创建静态方法持有者 类 空安全之前的常见 Dart 模式如下:
class MyMethodScope {
/// Prevents instantiation of this class.
factory MyMethodScope._() => null;
static void noop() {}
}
使用 null 安全性 是不可能的,因为工厂构造函数的 return 类型显然不可为 null。
基于https://github.com/dart-lang/language/issues/604,工厂构造器不能再return null,所以你不能这样做。
您也可以只使用 return 非空对象的私有构造函数(无论 factory
与否)。这仍然会阻止 class 在库外被实例化。 (当然,它不会阻止 class 在库中被实例化,但你可以避免这样做,因为你控制着你自己的库。你可以将 class 移动到一个单独的库中,如果您仍然担心意外实例化。)
或者只是将 class 声明为 abstract
,这是防止 class 被实例化的正常且直接的方法。