如何在dart中编写静态类?

问题描述 投票:0回答:2

我正在将 JSON5 移植到 dart,并且我想保留原始约定。

原始代码有一个

static class JSON5
,其中包含2个静态方法。但 dart 不允许静态类。

我的飞镖代码:

/// static class, do not instanciate or inherit this
class JSON5 {
  static String stringify(dynamic obj) { };
  static dynamic parse(String json5String) { };
}

是否可以阻止用户做两件事?

  • 实例化该类:
    var json5 = JSON5()
  • 扩展或实现类:
    class DerivedJSON5 extends JSON5 {}
flutter dart
2个回答
2
投票

要禁止实例化,您可以添加私有构造函数:

JSON5._();

为了防止继承,目前在 dart 中可以做的最好的事情就是从

meta
包中添加 @sealed 注释


0
投票

创建私有构造函数的另一个解决方案是创建类

abstract final
:

abstract final class JSON5 {
  static String stringify(dynamic obj) { };
  static dynamic parse(String json5String) { };
}
  • abstract
    防止实例化(即使类没有抽象方法)
  • final
    防止继承
© www.soinside.com 2019 - 2024. All rights reserved.