3

以下使用“this”来引用当前类中的实例变量是否可以接受?在 PHP 中这就是你必须这样做的方式,但我注意到在 Java 中你可以直接按名称调用变量。

我个人认为“this.variable”更容易理解,但如果这不正常,我不想养成不良的编码习惯。

谢谢!

public class MyClass {  

    /**
     * Private variable
     */
    private int myInt;

    /**
     * Setter method
     */
    public void setMyInt(int value) {
        this.myInt = value;
    }   
}
4

5 回答 5

7

就像人们一直在说的那样,它不是必需的,但它是可以接受的。

话虽这么说,如果你正在做这样的事情是必要的:

private int value;

public void setValue(int value) {
     this.value = value;
}

这区分了类变量和具有相同名称的参数。我发现自己几乎在我制作的每一个 setter 中都使用了这种模式,并且是我唯一一次使用 'this' 关键字。

于 2010-11-02T05:55:57.677 回答
1

这在 Java 中是完全可以接受的做法,尽管它不是必需的(正如您所提到的)。

于 2010-11-02T05:48:21.807 回答
1

我会这样写你的代码:

public class MyClass {

  private int myInt;

  public void setMyInt(int myInt) {
    this.myInt = myInt;
  }
}

与您的不同之处在于(除了删除了无用的 Javadoc)在我的代码中,参数与成员变量具有相同的名称。其他用户更喜欢给成员变量一个与参数不同的名称,但出于视觉平衡,我们更喜欢在必要时为成员变量添加前缀。this.在使用该标准进行 Java 编码的 10 多年中,我们从未遇到过由使用错误变量引起的错误。

于 2010-11-02T05:51:29.817 回答
0

使用或不使用,只要在整个代码库中保持一致即可。如果变量被屏蔽(通过参数或局部方法变量),则必须使用它

于 2010-11-02T05:49:20.990 回答
0

除非您的工作场所或项目有明确禁止this以这种方式使用的风格指南,否则我会说您所做的一切都很好。我个人this只在绝对必要时使用(例如,当我使用同名方法参数初始化实例变量时),但我已经看到很多代码总是用于this引用成员。它可能更具可读性,而且它的可读性肯定不会差很多,所以去吧!

于 2010-11-02T05:51:28.487 回答