java - 初始化字段时引用 'this'可以吗?

标签 java

初始化字段时引用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/

相关文章:

java - 如何使用 Java、AJAX 使用 Rest Web 服务从 MySQL 数据库检索数据并放置在 HTML 表单中

java - 从 Recyclerview 打开包含卡片的新 Activity

java - 如何计算Java中对象的数值年龄

java - Hibernate PostgreSQL OneToOne 关系首先触发子查询

java - 我可以在java中让图像alpha从左到右淡入淡出吗?

java - 无限整数链表 NullPointerException

java - 如何在 linkedin-j 中对搜索结果进行分页(LinkedIn Java API)

java - 内联图像显示为附件 : JavaMail

java - 像 Java Swing 中的 GTK 一样垂直堆叠?

java - 如何从数据库表中删除特定项目?