初始化字段时引用this
是否可以?
public class MainClass {
private SomeFieldClass field = new SomeFieldClass(this);
public MainClass() {}
}
还是在构造函数中这样做更好?
public class MainClass {
private SomeFieldClass field;
public MainClass() {
this.field = new SomeFieldClass(this);
}
}
最佳做法是什么?我相信第一个选项更适合单元测试和依赖注入(inject)。有什么问题吗?
最佳答案
问题有点不清楚。您是否担心将 this 传递给您的构造函数,或者担心在构造函数主体中使用 this.field,或者担心在构造函数而不是类主体中初始化字段?
我个人更喜欢在提到类成员时使用 this 前缀,但这是风格问题。
我也不喜欢在类主体中对非常量进行初始化。我发现对于较长的类,最好将所有初始化都放在一个设置的位置(例如构造函数),而不是必须通过视觉扫描声明来识别初始值。
如果您问及早通过这个(两个示例中的问题),我认为这取决于您是否可以处理目标对部分初始化的对象执行某些操作的可能性。我更喜欢将此类创建分离到不同的和显式调用的函数(例如,createAssociatedSomeObject())
关于java - 初始化字段时引用 'this'可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2679744/