【问题标题】:Should I be using keyword "this" in a constructor when no arguments are being passed?当没有传递参数时,我应该在构造函数中使用关键字“this”吗?
【发布时间】:2015-05-22 07:06:20
【问题描述】:

我想知道当类的构造函数中没有传递任何参数时,是否应该在 Java 中使用“this”。

private int id;

public ClassName() {
    this.id = -1;
}

 private int id;

public ClassName() {
    id = -1;
}

感谢您的宝贵时间。

【问题讨论】:

  • 我们使用它来区分类变量和局部变量,但由于没有局部变量,两者的工作方式相同。
  • 从语义的角度来看,没有区别。这是风格问题,您应该询问您的同事是否有您应该遵循的风格指南。如果不是,请决定哪种变体对您来说更具可读性,并保持一致。

标签: java constructor coding-style this


【解决方案1】:

如果没有参数,那么一切都是一样的。 但是,这始终是一个好习惯。

【讨论】:

    【解决方案2】:

    不,this 在这种情况下是可选的。只有在构造函数传递一个名为id 的参数时才需要它,以避免变量阴影。

    【讨论】:

      【解决方案3】:

      实际上你不应该这样做。您应该在声明中初始化该变量。

      如果您有更复杂的情况,则适用最少冗余原则:不要在不需要的地方写。

      【讨论】:

      • 可能有其他构造函数确实将id作为参数。在那种情况下,我不会说在声明中初始化它是合适的。
      • @aioobe 然后无参数构造函数应该使用 this(-1); 调用带有 arg 的构造函数
      • 没错。 (正如我所说,初始化不应该在声明时进行。)
      猜你喜欢
      • 2018-04-26
      • 1970-01-01
      • 2017-06-30
      • 2016-03-29
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多