我想创建一个类来对一些static const
值进行分组。
// SomeClass.dart
class SomeClass {
static const SOME_CONST = 'some value';
}
在dart中,防止依赖代码实例化此类的惯用方式是什么?我也想防止扩展到此类。在Java
中,我将执行以下操作:
// SomeClass.java
public final class SomeClass {
private SomeClass () {}
public static final String SOME_CONST = 'some value';
}
到目前为止,我所能想到的只是抛出Exception
,但我希望具有编译安全性,而不是在运行时停止代码。
class SomeClass {
SomeClass() {
throw new Exception("Instantiation of consts class not permitted");
}
...
答案 0 :(得分:3)
为您的课程提供一个私有的构造函数,它将使其只能在同一文件中创建,否则它将不可见。这也防止用户扩展或混入其他文件中的类。请注意,在同一个文件中,您仍然可以扩展它,因为您仍然可以访问构造函数。此外,由于所有类都定义了隐式接口,因此用户将始终能够实现您的类。
class Foo {
/// Private constructor, can only be invoked inside of this file (library).
Foo._();
}
// Same file (library).
class Fizz extends Foo {
Fizz() : super._();
}
// Different file (library).
class Bar extends Foo {} // Error: Foo does not have a zero-argument constructor
class Fizz extends Object with Foo {} // Error: The class Foo cannot be used as a mixin.
// Always allowed.
class Boo implements Foo {}