假设我在一个类中有以下代码:
String _str;
String get str => _str;
void set(String s) {
assert(_str == null);
_str = s;
}
如何确保只有setter和getter才能访问_str?这是为了防止同一类中的任何内容都无法绕过该条件。
不可能。在Dart中,隐私是每个库的。一个库中的所有内容都可以读取/写入该库中的其他所有内容。
我会去
String __str;
String get str => __str;
void set(String s) {
assert(__str == null);
__str = s;
}
除非从关联的getter / setter对中访问,否则绝不访问以两个下划线开头的成员。当我想要带有私有getter setter的私有字段时,有时会这样做
String __str;
String get _str => __str;
void _set(String s) {
assert(_str == null);
__str = s;
}
怪异的解决方法是在另一个库中创建一个类,例如
class StringProperty {
String _str;
String get value => _str;
void set value(String s) {
assert(_str == null);
_str = s;
}
}
然后像在你的图书馆一样使用它
final StringProperty str = new StringProperty();
然后您可以访问该值,然后像
str.value = 'abc';
print(str.value);
并没有其他方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句