我在Dart中超载了== operator
,并想用它来明确检查null
,有什么方法可以实现吗?
据我了解,会发生什么事,即使重载equals运算符,Dart也会隐式检查null
。它确定thing
不是null
而是Overridden
的实例,因此thing == null
返回false
。
我知道这是非常理想的行为,因为如果尚未启动对象,则无法调用重载函数,但是有没有办法创建静态运算符重载或其他实现null的方式明确检查?
class Overridden {
final dynamic _value;
Overridden({value}) : _value = value;
@override
bool operator ==(other) => _value == other.value;
dynamic get value => _value;
}
void main() {
Overridden thing = Overridden();
// Prints null as expected
print(thing.value);
// Prints false, which is unexpected
print(thing == null);
}
我希望能够直接使用==
运算符自己进行空值确定,而无需使用吸气剂或检查Overridden()
。