我正在将 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 {}
创建私有构造函数的另一个解决方案是创建类
abstract final
:
abstract final class JSON5 {
static String stringify(dynamic obj) { };
static dynamic parse(String json5String) { };
}
abstract
防止实例化(即使类没有抽象方法)final
防止继承