为带有可选参数的最终私有字段设置默认实例的最佳方法是什么?
What is the best way to set the default instance for a final private field with optional parameter?
给定一个 class 最终私有字段 _bar:
class Foo() {
final Bar _bar;
Foo({Bar bar}) : _bar = bar {
//error: list cannot be used as setter, it is final
_bar = new Bar();
}
}
试图在参数列表中设置它会导致此错误
//error: default values of an object must be constant
Foo({Bar bar: new Bar()}) : _bar = bar ..
我想保留可选参数,以便我可以在单元测试期间注入模拟。最好的方法是什么?
class Foo {
final Bar _bar;
Foo({Bar bar}) : _bar = bar != null ? bar : new Bar();
}
当逻辑很复杂时,我建议使用静态方法。
class Foo {
final Object _field1;
Foo({Object value1}) : this._field1 = _setUpField1(value1);
static Object _setUpField1(Object value) {
// Some complex logic
return value;
}
}
给定一个 class 最终私有字段 _bar:
class Foo() {
final Bar _bar;
Foo({Bar bar}) : _bar = bar {
//error: list cannot be used as setter, it is final
_bar = new Bar();
}
}
试图在参数列表中设置它会导致此错误
//error: default values of an object must be constant
Foo({Bar bar: new Bar()}) : _bar = bar ..
我想保留可选参数,以便我可以在单元测试期间注入模拟。最好的方法是什么?
class Foo {
final Bar _bar;
Foo({Bar bar}) : _bar = bar != null ? bar : new Bar();
}
当逻辑很复杂时,我建议使用静态方法。
class Foo {
final Object _field1;
Foo({Object value1}) : this._field1 = _setUpField1(value1);
static Object _setUpField1(Object value) {
// Some complex logic
return value;
}
}